OSDN Git Service

オリジナルのtrunkからwinバイナリ用ソースをインポート。
authoryuki <yuki@c066991c-cf13-ec4a-a49a-846e61667af5>
Fri, 4 Dec 2009 09:57:19 +0000 (09:57 +0000)
committeryuki <yuki@c066991c-cf13-ec4a-a49a-846e61667af5>
Fri, 4 Dec 2009 09:57:19 +0000 (09:57 +0000)
git-svn-id: http://192.168.11.7/svn/saccubus/trunk@75 c066991c-cf13-ec4a-a49a-846e61667af5

win/cookie/Makefile [new file with mode: 0644]
win/cookie/cookie.c [new file with mode: 0644]
win/cookie/cookie.rc [new file with mode: 0644]
win/cookie/muuma.ico [new file with mode: 0644]
win/launcher/Launcher.c [new file with mode: 0644]
win/launcher/Makefile [new file with mode: 0644]
win/launcher/Saccubus.rc [new file with mode: 0644]
win/launcher/muuma.ico [new file with mode: 0644]

diff --git a/win/cookie/Makefile b/win/cookie/Makefile
new file mode 100644 (file)
index 0000000..cd2a842
--- /dev/null
@@ -0,0 +1,105 @@
+# Makefile ( n source file 1 execute file version )
+# 2002/12/ 4
+
+# ÆüËܸì¤Î¥³¥á¥ó¥ÈÉôʬ¤Ë½¾¤Ã¤Æ½¤Àµ¤·¤Æ²¼¤µ¤¤¡£
+# $(HOGEHOGE) ¤È¤¤¤¦¤Î¤Ï¥Þ¥¯¥í¡Ê°ì¼ï¤ÎÊÑ¿ô¡Ë¤Ç¡¢
+# HOGEHOGE=... ¤ÇÄêµÁ¤µ¤ì¤¿ÆâÍƤËŸ³«¤·¤Æ²ò¼á¤µ¤ì¤Þ¤¹¡£
+# ¹ÔƬ¤Î¥¿¥Ö¤Ë¤Ï°ÕÌ£¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤·¤Ê¤¤¤Ç²¼¤µ¤¤¡£
+# ¤Ç¤­¤ì¤Ð¡¢ºÇ½ªÅª¤ËÆüËܸ쥳¥á¥ó¥È¤Ïºï½ü¤·¤Æ²¼¤µ¤¤¡£
+
+#       ¢­¥Ñ¥Ã¥±¡¼¥¸Ì¾¤«¤Ä¼Â¹Ô¥Õ¥¡¥¤¥ë̾¤Ë½ñ¤­´¹¤¨¤ë
+PACKAGE        = cookie
+#       ¢­¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò½ñ¤­Ê¤٤ë
+SRCS   = cookie.c
+#       ¢­¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò½ñ¤­Ê¤٤ë
+HEADS  = 
+OBJS   = $(SRCS:.c=.o) $(PACKAGE)_res.o
+
+#       ¢­¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤á¤ë¥Õ¥¡¥¤¥ë̾¤ò½ñ¤­Ê¤٤ë
+FILES  = Makefile $(HEADS) $(SRCS)
+VER    = `date +%Y%m%d`
+
+
+### command and flags ###
+# uncomment when debugging
+#DEBUG = -ggdb -pg # -lefence
+RELEASE = -s
+
+# common (*.o)
+LD     = gcc
+LDFLAGS        = -g $(DEBUG) $(RELEASE)
+LDLIBS = -lm -lmingw32 # -mwindows
+
+# C (*.c)
+CC     = gcc
+CFLAGS = -g -O3 -Wall $(DEBUG) $(RELEASE)
+CPPFLAGS= -I.
+
+# C++ (*.cc)
+CXX    = g++
+CXXFLAGS= -g -O3 -Wall $(DEBUG)
+
+# Fortran77 (*.f)
+FC     = f77
+FFLAGS = -Wall $(DEBUG)
+
+# Pascal (*.p)
+PC     = pc
+PFLAGS = -Wall $(DEBUG)
+
+# etc
+SHELL  = /bin/sh
+RM     = rm -f
+PROF   = gprof
+
+
+### rules ###
+
+.SUFFIXES:
+.SUFFIXES: .o .c .cc .f .p
+
+all: $(PACKAGE)
+
+$(PACKAGE): $(OBJS)
+       $(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)
+
+$(OBJS): $(HEADS) Makefile
+
+.c.o:
+       $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+.cc.o:
+       $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
+.f.o:
+       $(FC) $(FFLAGS) -c $< -o $@
+.p.o:
+       $(PC) $(PFLAGS) $(CPPFLAGS) -c $< -o $@
+
+$(PACKAGE)_res.o: $(PACKAGE).rc
+       windres -i $(PACKAGE).rc -o $(PACKAGE)_res.o
+
+### useful commands ###
+
+clean:
+       $(RM) $(PACKAGE) $(OBJS)
+       $(RM) core gmon.out *~ #*#
+
+tar:
+       @echo $(PACKAGE)-$(VER) > .package
+       @$(RM) -r `cat .package`
+       @mkdir `cat .package`
+       @ln $(FILES) `cat .package`
+       tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz
+       @$(RM) -r `cat .package` .package
+
+zip:
+       zip -9 $(PACKAGE)-$(VER).zip $(FILES)
+
+
+prof: run
+       $(PROF) $(PACKAGE) | less
+
+run: all
+#       ¢­¥µ¥ó¥×¥ë¥Ç¡¼¥¿¤Ç¼Â¹Ô¤¹¤ë¤è¤¦¤Ë½ñ¤­Ä¾¤¹
+#          $(PACKAGE) ¤Ï¼Â¹Ô¥Õ¥¡¥¤¥ë̾¤ËŸ³«¤µ¤ì¤ë
+#          ¹ÔƬ¤Ï¥¿¥Ö¡Ê¥¹¥Ú¡¼¥¹¤Ç¤Ï¤Ê¤¤¡Ë
+       ./$(PACKAGE) < sample-data | less
diff --git a/win/cookie/cookie.c b/win/cookie/cookie.c
new file mode 100644 (file)
index 0000000..a16dbe6
--- /dev/null
@@ -0,0 +1,118 @@
+/*\r
+ * Windows\97pCookie\8eæ\93¾\83v\83\8d\83O\83\89\83\80\r
+ * copyright (c) 2008 \83Õ\81i\83v\83T\83C\81j\r
+ *\r
+ * IE\82Ì\83N\83b\83L\81[\82ð\8eæ\93¾\82µ\82Ä\95\\8e¦\82·\82é\83v\83\8d\83O\83\89\83\80\82Å\82·\81B\r
+ *\r
+ * \82±\82Ì\83t\83@\83C\83\8b\82Í\81u\82³\82«\82ã\82Î\82·\81v\82Ì\88ê\95\94\82Å\82 \82è\81A\r
+ * \82±\82Ì\83\\81[\83X\83R\81[\83h\82ÍGPL\83\89\83C\83Z\83\93\83X\82Å\94z\95z\82³\82ê\82Ü\82·\82Å\82·\81B\r
+ */\r
+#include <windows.h>\r
+#include <stdio.h>\r
+\r
+//\83j\83R\83j\83R\93®\89æURL\r
+#define NICO_URL "http://www.nicovideo.jp/"\r
+//\94O\82Ì\82½\82ß\88ê\89ñ\8dí\8f\9c\82·\82é\82½\82ß\82Ì\8eg\82¤\83N\83b\83L\81[\81B\r
+#define NICO_CLEAR_COOKIE "dummy; expires=Thu, 1-Jan-1970 00:00:00 GMT; domain=.nicovideo.jp; path=/;"\r
+#define COOKIE_MAX 4096\r
+\r
+int getCookie(void* dynamic){\r
+       //\83N\83b\83L\81[\8eæ\93¾\8aÖ\90\94\82ð\8eæ\93¾\r
+       int (*get_cookie)(const char* url,const char* str,char* buff,int* size) = (void*)GetProcAddress((HMODULE)dynamic, "InternetGetCookieA");\r
+       if(!get_cookie){\r
+       fputs("failed to load InternetGetCookieA",stderr);\r
+        return -1;\r
+       }\r
+       //\83o\83b\83t\83@\97p\83\81\83\82\83\8a\82Ì\8am\95Û\81B\r
+       char* str = malloc(COOKIE_MAX);\r
+       if(!str){\r
+       fputs("failed to malloc memory",stderr);\r
+        return -1;\r
+       }\r
+       int size = COOKIE_MAX;\r
+       if(get_cookie(NICO_URL,NULL,str,&size)){\r
+               puts(str);\r
+       }else if(size > COOKIE_MAX){//\83o\83b\83t\83@\82ª\91«\82è\82È\82­\82Ä\8e¸\94s\82µ\82½\82Æ\8ev\82í\82ê\82é\81B\r
+               //\83o\83b\83t\83@\8dÄ\8am\95Û\r
+               str = realloc(str,size);\r
+               if(!str){\r
+               fputs("failed to realloc memory",stderr);\r
+               return -1;\r
+               }\r
+               if(get_cookie(NICO_URL,NULL,str,&size)){\r
+                       puts(str);\r
+               }else{//\82È\82ñ\82©\83\\81[\83X\82ª\91½\8f­\89\98\82¢\82¯\82Ç\93®\82¯\82Î\82æ\82ë\82µ\81B\r
+               fputs("failed to get cookie",stderr);\r
+               free(str);\r
+               return -1;\r
+               }\r
+       }else{\r
+       fputs("failed to get cookie",stderr);\r
+               free(str);\r
+               return -1;\r
+       }\r
+       free(str);\r
+       return 0;\r
+}\r
+\r
+int setCookie(void* dynamic,const char* str){\r
+       //\83N\83b\83L\81[\8eæ\93¾\8aÖ\90\94\82ð\8eæ\93¾\r
+       int (*set_cookie)(const char* url,const char* name,const char* data) = (void*)GetProcAddress((HMODULE)dynamic, "InternetSetCookieA");\r
+       if(!set_cookie){\r
+       fputs("failed to load InternetGetCookieA",stderr);\r
+        return -1;\r
+       }\r
+       //\96¼\91O\82Æ\83f\81[\83^\82Ì\95ª\97£\r
+       int i=0;\r
+       int length = strlen(str);\r
+       char* tmp = malloc(length+1);\r
+       memcpy(tmp,str,length);\r
+       tmp[length] = '\0';\r
+       char* name = tmp;\r
+       char* data = NULL;\r
+       for(i=0;i<length;i++){\r
+               if(tmp[i] == '='){\r
+                       tmp[i] = '\0';\r
+                       data = &tmp[i+1];\r
+                       break;\r
+               }\r
+       }\r
+       if(data == NULL){\r
+       fputs("Cookie str is invalid.",stderr);\r
+       free(tmp);\r
+               return -1;\r
+       }\r
+       //\93o\98^\82·\82é\91O\82É\82Æ\82è\82 \82¦\82¸\8dí\8f\9c\82µ\82Ä\82Ý\82é\r
+       if(set_cookie(NICO_URL,name,NICO_CLEAR_COOKIE) == FALSE){\r
+       fputs("failed to clear cookie.",stderr);\r
+       free(tmp);\r
+               return -1;\r
+       }\r
+       //\8eÀ\8dÛ\82É\93o\98^\82µ\82Ä\82Ý\82é\r
+       if(set_cookie(NICO_URL,name,data) == TRUE){\r
+       free(tmp);\r
+               return 0;\r
+       }else{\r
+       fputs("failed to set cookie.",stderr);\r
+       free(tmp);\r
+               return -1;\r
+       }\r
+}\r
+\r
+int main(int argc,char* argv[]){\r
+       //wininet.dll\82Ì\83_\83C\83i\83~\83b\83N\93Ç\82Ý\8d\9e\82Ý\81B\r
+    void* dynamic = (void*)LoadLibrary("wininet.dll");\r
+    if (!dynamic) {\r
+       fputs("failed to load wininet.dll",stderr);\r
+        return -1;\r
+    }\r
+       int ret = 0;\r
+       if(argc > 1){/* set\82·\82é\83N\83b\83L\81[\82ª\91\8dÝ\82·\82é */\r
+               ret = setCookie(dynamic,argv[1]);\r
+       }else{/*\91\8dÝ\82µ\82È\82¢*/\r
+               ret = getCookie(dynamic);\r
+       }\r
+       //\8aJ\95ú\81A\8fI\97¹\81B\r
+       FreeLibrary((HMODULE)dynamic);\r
+       return ret;\r
+}\r
diff --git a/win/cookie/cookie.rc b/win/cookie/cookie.rc
new file mode 100644 (file)
index 0000000..c0c34f9
--- /dev/null
@@ -0,0 +1 @@
+1 ICON PRELOAD "muuma.ico"\r
diff --git a/win/cookie/muuma.ico b/win/cookie/muuma.ico
new file mode 100644 (file)
index 0000000..c6697ac
Binary files /dev/null and b/win/cookie/muuma.ico differ
diff --git a/win/launcher/Launcher.c b/win/launcher/Launcher.c
new file mode 100644 (file)
index 0000000..cf4b68f
--- /dev/null
@@ -0,0 +1,145 @@
+/*\r
+ * Windows\97p\83v\83\8d\83O\83\89\83\80\83\89\83\93\83`\83\83\r
+ * copyright (c) 2008 \83Õ\81i\83v\83T\83C\81j\r
+ *\r
+ * \81u\82³\82«\82ã\82Î\82·\81v\96{\91Ì\82ðexe\8co\97R\82Å\93®\82©\82·\82½\82ß\82Ì\83\89\83\93\83`\83\83\82Å\82·\81B\r
+ *\r
+ * \82±\82Ì\83t\83@\83C\83\8b\82Í\81u\82³\82«\82ã\82Î\82·\81v\82Ì\88ê\95\94\82Å\82 \82è\81A\r
+ * \82±\82Ì\83\\81[\83X\83R\81[\83h\82ÍGPL\83\89\83C\83Z\83\93\83X\82Å\94z\95z\82³\82ê\82Ü\82·\82Å\82·\81B\r
+ */\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <windows.h>\r
+\r
+#define CMD_CHECK "java.exe"\r
+#define CMD_RUN "java -jar Saccubus.jar"\r
+#define CMD_LOG "[log]frontend.txt"\r
+\r
+int doCmd(char* command,int show_msg,const char* log_name);\r
+\r
+int WINAPI WinMain (HINSTANCE hInstance, \r
+                       HINSTANCE hPrevInstance, \r
+                       PSTR szCmdLine, \r
+                       int iCmdShow){\r
+                       int ret;\r
+                       if(doCmd(CMD_CHECK,FALSE,NULL) == 0){\r
+                               if(szCmdLine && strlen(szCmdLine) > 0){\r
+                                       /*\88ø\90\94\82ª\82 \82é\8fê\8d\87\82Í\81A\98A\8c\8b\82µ\82Ä\8eÀ\8ds\81B*/\r
+\r
+                                       //\83f\81[\83^\82ð\8eû\8fW\81B\r
+                                       const char* cmd_base = CMD_RUN;\r
+                                       int cmd_base_length = strlen(cmd_base);\r
+                                       const char* cmd_add = szCmdLine;\r
+                                       int cmd_add_length = strlen(cmd_add);\r
+                                       //\83\81\83\82\83\8a\8am\95Û\r
+                                       char* call_cmd_line = malloc(cmd_base_length+cmd_add_length+2);\r
+                                       //Java\97p\82Ì\95\94\95ª\82ð\83R\83s\81[\81Bstrcat\82Æ\82©\82Í\82 \82ñ\82Ü\82è\8eg\82¢\82½\82­\82È\82¢\81B\r
+                                       memcpy(call_cmd_line,cmd_base,cmd_base_length);\r
+                                       //\8bó\94\92\82ð\92Ç\89Á\r
+                                       call_cmd_line[cmd_base_length] = ' ';\r
+                                       //\88ø\90\94\82ð\92Ç\89Á\r
+                                       memcpy(call_cmd_line+cmd_base_length+1,cmd_add,cmd_add_length);\r
+                                       //\8dÅ\8cã\82Ì\0\82ð\96Y\82ê\82¸\82É\81B\r
+                                       call_cmd_line[cmd_base_length+cmd_add_length+1] = '\0';\r
+                                       //\83R\83}\83\93\83h\8eÀ\8ds\81B\r
+                                       ret = doCmd(call_cmd_line,TRUE,CMD_LOG);\r
+                                       //\96Y\82ê\82¸\82É\8aJ\95ú\81B\r
+                                       free(call_cmd_line);\r
+                               }else{/*\88ø\90\94\82ª\96³\82¢\8fê\8d\87\82Í\95\81\92Ê\82É\8eÀ\8ds*/\r
+                                       ret = doCmd(CMD_RUN,TRUE,CMD_LOG);\r
+                               }\r
+                       }else{\r
+                               MessageBox(NULL,"Java\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82È\82¢\82æ\82¤\82Å\82·\81B","\83G\83\89\81[",MB_OK | MB_ICONERROR);\r
+                               ret = -1;\r
+                       }\r
+                       return 0;\r
+}\r
+\r
+int doCmd(char* command,int show_msg,const char* log_name){\r
+       int ret = 0;\r
+\r
+       STARTUPINFO startup_info;\r
+       PROCESS_INFORMATION process_info;\r
+       HANDLE _hnd_out = INVALID_HANDLE_VALUE;\r
+       HANDLE hnd_out = INVALID_HANDLE_VALUE;\r
+\r
+       process_info.hProcess = NULL;\r
+\r
+       memset(&startup_info, 0, sizeof(STARTUPINFO));\r
+       startup_info.cb = sizeof(STARTUPINFO);\r
+\r
+       if(log_name){\r
+               _hnd_out = CreateFile(\r
+                       log_name,\r
+                       GENERIC_WRITE,\r
+                       FILE_SHARE_WRITE,\r
+                       NULL,\r
+                       CREATE_ALWAYS,\r
+                       FILE_ATTRIBUTE_NORMAL,\r
+                       NULL\r
+               );\r
+               if(_hnd_out != INVALID_HANDLE_VALUE){\r
+                       DuplicateHandle(GetCurrentProcess(), _hnd_out, GetCurrentProcess(),&hnd_out, 0, 1, DUPLICATE_SAME_ACCESS);\r
+                       if(hnd_out != INVALID_HANDLE_VALUE){\r
+                               startup_info.dwFlags = STARTF_USESTDHANDLES;\r
+                               startup_info.hStdOutput = hnd_out;\r
+                               startup_info.hStdError = hnd_out;\r
+                       }\r
+               }\r
+       }\r
+       int code = CreateProcessA(\r
+           NULL,                                               // \8eÀ\8ds\83t\83@\83C\83\8b\96¼\r
+           command,                                    // \83R\83}\83\93\83h\83\89\83C\83\93\83p\83\89\83\81\81[\83^\r
+           NULL,                                               // \83v\83\8d\83Z\83X\82Ì\95Û\8cì\91®\90«\r
+           NULL,                                               // \83X\83\8c\83b\83h\82Ì\95Û\8cì\91®\90«\r
+           TRUE,                                               // \83I\83u\83W\83F\83N\83g\83n\83\93\83h\83\8b\8cp\8f³\82Ì\83t\83\89\83O\r
+           DETACHED_PROCESS | \r
+               CREATE_NEW_PROCESS_GROUP | \r
+               NORMAL_PRIORITY_CLASS |\r
+               CREATE_NO_WINDOW,               // \91®\90«\83t\83\89\83O\r
+           NULL,                                               // \8aÂ\8b«\95Ï\90\94\8fî\95ñ\82Ö\82Ì\83|\83C\83\93\83^\r
+           NULL,                                               // \8bN\93®\8e\9e\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
+           &startup_info,                              // \83E\83B\83\93\83h\83E\95\\8e¦\90Ý\92è\r
+           &process_info                               // \83v\83\8d\83Z\83X\81E\83X\83\8c\83b\83h\82Ì\8fî\95ñ\r
+       );\r
+       if(code == 0){\r
+               ret = -1;\r
+               if(show_msg){\r
+                       char* msg;\r
+                       int error_code = FormatMessageA(\r
+                               FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,    // \93®\8dì\83t\83\89\83O\r
+                               0,                                                                                                                              // \83\81\83b\83Z\81[\83W\92è\8b`\88Ê\92u\r
+                               GetLastError(),                                                                                                 // \83\81\83b\83Z\81[\83WID\r
+                               LANG_USER_DEFAULT,                                                                                              // \8c¾\8cêID\r
+                               (LPTSTR)&msg,                                                                                                   // \83o\83b\83t\83@\82Ì\83A\83h\83\8c\83X\r
+                               0,                                                                                                                              // \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+                               0                                                                                                                               // \91}\93ü\8bå\82Ì\94z\97ñ\82Ì\83A\83h\83\8c\83X\r
+                       );\r
+                       if(error_code == 0){\r
+                               MessageBox(NULL,"\89½\82ç\82©\82Ì\83G\83\89\81[\82ª\94­\90\82µ\82Ü\82µ\82½\81B","\83G\83\89\81[",MB_OK | MB_ICONERROR);\r
+                       }else{\r
+                               MessageBox(NULL,msg, "\83G\83\89\81[", MB_ICONERROR|MB_OK);\r
+                       }\r
+                       LocalFree(msg);\r
+               }\r
+       }else{\r
+               /* //\96ß\82è\92l\82ð\8eæ\93¾\82·\82é\8fê\8d\87\82Í\83R\83\81\83\93\83g\83A\83E\83g\89ð\8f\9c\r
+               // \8fI\97¹\82·\82é\82Ü\82Å\91Ò\82Â\r
+               WaitForSingleObject(process_info.hProcess,INFINITE);\r
+               //\96ß\82è\92l\82ð\8eæ\93¾\r
+               DWORD exit_code;\r
+               GetExitCodeProcess(process_info.hProcess, &exit_code);\r
+               ret = exit_code;\r
+               */\r
+               if(_hnd_out != INVALID_HANDLE_VALUE){\r
+                       CloseHandle(_hnd_out);\r
+               }\r
+               if(hnd_out != INVALID_HANDLE_VALUE){\r
+                       CloseHandle(hnd_out);\r
+               }\r
+               CloseHandle(process_info.hThread);\r
+               CloseHandle(process_info.hProcess);\r
+\r
+       }\r
+       return ret;\r
+}\r
diff --git a/win/launcher/Makefile b/win/launcher/Makefile
new file mode 100644 (file)
index 0000000..21a8573
--- /dev/null
@@ -0,0 +1,105 @@
+# Makefile ( n source file 1 execute file version )
+# 2002/12/ 4
+
+# ÆüËܸì¤Î¥³¥á¥ó¥ÈÉôʬ¤Ë½¾¤Ã¤Æ½¤Àµ¤·¤Æ²¼¤µ¤¤¡£
+# $(HOGEHOGE) ¤È¤¤¤¦¤Î¤Ï¥Þ¥¯¥í¡Ê°ì¼ï¤ÎÊÑ¿ô¡Ë¤Ç¡¢
+# HOGEHOGE=... ¤ÇÄêµÁ¤µ¤ì¤¿ÆâÍƤËŸ³«¤·¤Æ²ò¼á¤µ¤ì¤Þ¤¹¡£
+# ¹ÔƬ¤Î¥¿¥Ö¤Ë¤Ï°ÕÌ£¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤·¤Ê¤¤¤Ç²¼¤µ¤¤¡£
+# ¤Ç¤­¤ì¤Ð¡¢ºÇ½ªÅª¤ËÆüËܸ쥳¥á¥ó¥È¤Ïºï½ü¤·¤Æ²¼¤µ¤¤¡£
+
+#       ¢­¥Ñ¥Ã¥±¡¼¥¸Ì¾¤«¤Ä¼Â¹Ô¥Õ¥¡¥¤¥ë̾¤Ë½ñ¤­´¹¤¨¤ë
+PACKAGE        = Saccubus
+#       ¢­¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò½ñ¤­Ê¤٤ë
+SRCS   = Launcher.c
+#       ¢­¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò½ñ¤­Ê¤٤ë
+HEADS  = 
+OBJS   = $(SRCS:.c=.o) $(PACKAGE)_res.o
+
+#       ¢­¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤á¤ë¥Õ¥¡¥¤¥ë̾¤ò½ñ¤­Ê¤٤ë
+FILES  = Makefile $(HEADS) $(SRCS)
+VER    = `date +%Y%m%d`
+
+
+### command and flags ###
+# uncomment when debugging
+#DEBUG = -ggdb -pg # -lefence
+RELEASE = -s
+
+# common (*.o)
+LD     = gcc
+LDFLAGS        = -g $(DEBUG) $(RELEASE)
+LDLIBS = -lm -lmingw32 -mwindows
+
+# C (*.c)
+CC     = gcc
+CFLAGS = -g -O3 -Wall $(DEBUG) $(RELEASE)
+CPPFLAGS= -I.
+
+# C++ (*.cc)
+CXX    = g++
+CXXFLAGS= -g -O3 -Wall $(DEBUG)
+
+# Fortran77 (*.f)
+FC     = f77
+FFLAGS = -Wall $(DEBUG)
+
+# Pascal (*.p)
+PC     = pc
+PFLAGS = -Wall $(DEBUG)
+
+# etc
+SHELL  = /bin/sh
+RM     = rm -f
+PROF   = gprof
+
+
+### rules ###
+
+.SUFFIXES:
+.SUFFIXES: .o .c .cc .f .p
+
+all: $(PACKAGE)
+
+$(PACKAGE): $(OBJS)
+       $(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)
+
+$(OBJS): $(HEADS) Makefile
+
+.c.o:
+       $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+.cc.o:
+       $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
+.f.o:
+       $(FC) $(FFLAGS) -c $< -o $@
+.p.o:
+       $(PC) $(PFLAGS) $(CPPFLAGS) -c $< -o $@
+
+$(PACKAGE)_res.o: $(PACKAGE).rc
+       windres -i $(PACKAGE).rc -o $(PACKAGE)_res.o
+
+### useful commands ###
+
+clean:
+       $(RM) $(PACKAGE) $(OBJS)
+       $(RM) core gmon.out *~ #*#
+
+tar:
+       @echo $(PACKAGE)-$(VER) > .package
+       @$(RM) -r `cat .package`
+       @mkdir `cat .package`
+       @ln $(FILES) `cat .package`
+       tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz
+       @$(RM) -r `cat .package` .package
+
+zip:
+       zip -9 $(PACKAGE)-$(VER).zip $(FILES)
+
+
+prof: run
+       $(PROF) $(PACKAGE) | less
+
+run: all
+#       ¢­¥µ¥ó¥×¥ë¥Ç¡¼¥¿¤Ç¼Â¹Ô¤¹¤ë¤è¤¦¤Ë½ñ¤­Ä¾¤¹
+#          $(PACKAGE) ¤Ï¼Â¹Ô¥Õ¥¡¥¤¥ë̾¤ËŸ³«¤µ¤ì¤ë
+#          ¹ÔƬ¤Ï¥¿¥Ö¡Ê¥¹¥Ú¡¼¥¹¤Ç¤Ï¤Ê¤¤¡Ë
+       ./$(PACKAGE) < sample-data | less
diff --git a/win/launcher/Saccubus.rc b/win/launcher/Saccubus.rc
new file mode 100644 (file)
index 0000000..c0c34f9
--- /dev/null
@@ -0,0 +1 @@
+1 ICON PRELOAD "muuma.ico"\r
diff --git a/win/launcher/muuma.ico b/win/launcher/muuma.ico
new file mode 100644 (file)
index 0000000..c6697ac
Binary files /dev/null and b/win/launcher/muuma.ico differ