Changeset 551 for trunk/av2.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/av2.c
r2 r551 14 14 HMTX av2Sem; 15 15 16 17 VOID APIENTRY deinit (ULONG why){16 VOID APIENTRY deinit(ULONG why) 17 { 18 18 19 19 /* cleanup */ 20 20 21 21 DosCloseMutexSem(av2Sem); 22 if (DosOpenMutexSem("\\SEM32\\AV2",&av2Sem)) {23 24 static CHAR 25 CHAR 26 HDIR 27 ULONG 22 if (DosOpenMutexSem("\\SEM32\\AV2", &av2Sem)) { 23 24 static CHAR s[CCHMAXPATH]; 25 CHAR *enddir; 26 HDIR search_handle; 27 ULONG num_matches; 28 28 static FILEFINDBUF3 f; 29 29 30 30 save_dir(s); 31 if (s[strlen(s) - 1] != '\\')32 strcat(s, "\\");31 if (s[strlen(s) - 1] != '\\') 32 strcat(s, "\\"); 33 33 enddir = &s[strlen(s)]; 34 if (*ArcTempRoot) {35 strcat(s, ArcTempRoot);36 strcat(s, "*");34 if (*ArcTempRoot) { 35 strcat(s, ArcTempRoot); 36 strcat(s, "*"); 37 37 search_handle = HDIR_CREATE; 38 38 num_matches = 1L; 39 if(!DosFindFirst(s, 40 &search_handle, 41 FILE_NORMAL | FILE_DIRECTORY | 42 FILE_SYSTEM | FILE_READONLY | FILE_HIDDEN | 43 FILE_ARCHIVED, 44 &f, 45 sizeof(FILEFINDBUF3), 46 &num_matches, 47 FIL_STANDARD)) { 48 do { 49 strcpy(enddir,f.achName); 50 if(f.attrFile & FILE_DIRECTORY) { 51 wipeallf("%s\\*",s); 52 DosDeleteDir(s); 53 } 54 else 55 unlinkf("%s",s); 56 } while(!DosFindNext(search_handle, 57 &f, 58 sizeof(FILEFINDBUF3), 59 &num_matches)); 60 DosFindClose(search_handle); 39 if (!DosFindFirst(s, 40 &search_handle, 41 FILE_NORMAL | FILE_DIRECTORY | 42 FILE_SYSTEM | FILE_READONLY | FILE_HIDDEN | 43 FILE_ARCHIVED, 44 &f, 45 sizeof(FILEFINDBUF3), &num_matches, FIL_STANDARD)) { 46 do { 47 strcpy(enddir, f.achName); 48 if (f.attrFile & FILE_DIRECTORY) { 49 wipeallf("%s\\*", s); 50 DosDeleteDir(s); 51 } 52 else 53 unlinkf("%s", s); 54 } while (!DosFindNext(search_handle, 55 &f, sizeof(FILEFINDBUF3), &num_matches)); 56 DosFindClose(search_handle); 61 57 } 62 58 } … … 65 61 DosCloseMutexSem(av2Sem); 66 62 67 DosExitList(EXLST_REMOVE, deinit);63 DosExitList(EXLST_REMOVE, deinit); 68 64 } 69 65 70 71 int main (int argc,char *argv[]){72 73 HAB 74 HMQ 75 QMSG 76 HWND hwndFrame = (HWND)0;77 static CHAR 78 CHAR 79 INT 66 int main(int argc, char *argv[]) 67 { 68 69 HAB hab; 70 HMQ hmq; 71 QMSG qmsg; 72 HWND hwndFrame = (HWND) 0; 73 static CHAR fullname[CCHMAXPATH]; 74 CHAR *thisarg = NULL; 75 INT x; 80 76 81 77 *fullname = 0; 82 strcpy(appname, "AV/2");78 strcpy(appname, "AV/2"); 83 79 fAmAV2 = TRUE; 84 80 DosError(FERR_DISABLEHARDERR); 85 for (x = 1;x < argc;x++) {86 if (!strchr("/;,`\'",*argv[x]) &&87 88 89 (strchr(argv[x],'?') || strchr(argv[x],'*') ||90 !strchr(argv[x],'.')))) {81 for (x = 1; x < argc; x++) { 82 if (!strchr("/;,`\'", *argv[x]) && 83 !thisarg && 84 (IsFile(argv[x]) == 1 || 85 (strchr(argv[x], '?') || strchr(argv[x], '*') || 86 !strchr(argv[x], '.')))) { 91 87 thisarg = argv[x]; 92 88 break; 93 89 } 94 90 } 95 DosExitList(EXLST_ADD,deinit); 96 if(DosOpenMutexSem("\\SEM32\\AV2", 97 &av2Sem)) 98 DosCreateMutexSem("\\SEM32\\AV2", 99 &av2Sem, 100 DC_SEM_SHARED, 101 FALSE); 102 if(thisarg) { 103 if(DosQueryPathInfo(thisarg, 104 FIL_QUERYFULLNAME, 105 fullname, 106 sizeof(fullname))) 107 strcpy(fullname,thisarg); 108 if(*fullname && (strchr(fullname,'?') || 109 strchr(fullname,'*') || 110 !strchr(fullname,'.'))) { 91 DosExitList(EXLST_ADD, deinit); 92 if (DosOpenMutexSem("\\SEM32\\AV2", &av2Sem)) 93 DosCreateMutexSem("\\SEM32\\AV2", &av2Sem, DC_SEM_SHARED, FALSE); 94 if (thisarg) { 95 if (DosQueryPathInfo(thisarg, 96 FIL_QUERYFULLNAME, fullname, sizeof(fullname))) 97 strcpy(fullname, thisarg); 98 if (*fullname && (strchr(fullname, '?') || 99 strchr(fullname, '*') || !strchr(fullname, '.'))) { 111 100 112 101 static FILEFINDBUF3 ffb; 113 ULONG nm; 114 HDIR hdir; 115 CHAR *enddir; 116 117 if(!strchr(fullname,'.')) 118 strcat(fullname,".*"); 119 enddir = strrchr(fullname,'\\'); 120 if(enddir) { 121 enddir++; 122 hdir = HDIR_CREATE; 123 nm = 1L; 124 if(!DosFindFirst(fullname, 125 &hdir, 126 FILE_NORMAL | FILE_SYSTEM | 127 FILE_READONLY | FILE_HIDDEN | FILE_ARCHIVED, 128 &ffb, 129 sizeof(FILEFINDBUF3), 130 &nm, 131 FIL_STANDARD)) { 132 strcpy(enddir,ffb.achName); 133 DosFindClose(hdir); 134 } 102 ULONG nm; 103 HDIR hdir; 104 CHAR *enddir; 105 106 if (!strchr(fullname, '.')) 107 strcat(fullname, ".*"); 108 enddir = strrchr(fullname, '\\'); 109 if (enddir) { 110 enddir++; 111 hdir = HDIR_CREATE; 112 nm = 1L; 113 if (!DosFindFirst(fullname, 114 &hdir, 115 FILE_NORMAL | FILE_SYSTEM | 116 FILE_READONLY | FILE_HIDDEN | FILE_ARCHIVED, 117 &ffb, sizeof(FILEFINDBUF3), &nm, FIL_STANDARD)) { 118 strcpy(enddir, ffb.achName); 119 DosFindClose(hdir); 120 } 135 121 } 136 122 } 137 123 } 138 124 hab = WinInitialize(0); 139 if (hab) {140 hmq = WinCreateMsgQueue(hab, 1024);141 if (hmq) {125 if (hab) { 126 hmq = WinCreateMsgQueue(hab, 1024); 127 if (hmq) { 142 128 { 143 static CHAR path[CCHMAXPATH]; 144 CHAR *env; 145 FILESTATUS3 fs; 146 147 env = getenv("FM3INI"); 148 if(env && *env) { 149 DosError(FERR_DISABLEHARDERR); 150 if(!DosQueryPathInfo(env, 151 FIL_QUERYFULLNAME, 152 path, 153 sizeof(path))) { 154 DosError(FERR_DISABLEHARDERR); 155 if(!DosQueryPathInfo(path, 156 FIL_STANDARD, 157 &fs, 158 (ULONG)sizeof(fs))) { 159 if(!(fs.attrFile & FILE_DIRECTORY)) { 160 env = strrchr(path,'\\'); 161 if(env) 162 *env = 0; 163 } 164 DosError(FERR_DISABLEHARDERR); 165 if(!DosQueryPathInfo(path, 166 FIL_STANDARD, 167 &fs, 168 (ULONG)sizeof(fs))) { 169 if(fs.attrFile & FILE_DIRECTORY) 170 switch_to(path); 171 } 172 } 173 } 174 } 175 } 176 if(InitFM3DLL(hab,argc,argv)) { 177 if(CheckVersion(VERMAJOR,VERMINOR)) { 178 fAmAV2 = TRUE; 179 if(!*fullname) { 180 strcpy(fullname,"*"); 181 if(!insert_filename(HWND_DESKTOP, 182 fullname, 183 TRUE, 184 FALSE) || 185 !*fullname || *fullname == '*') 186 goto Abort; 187 } 188 if(*fullname) { 189 if(ExecAssociation(HWND_DESKTOP,fullname) == -1) { 190 hwndFrame = StartArcCnr(HWND_DESKTOP, 191 (HWND)0, 192 fullname, 193 0, 194 NULL); 195 if(!hwndFrame) { 196 197 CHAR *p = strrchr(fullname,'.'); 198 199 if(p) { 200 if(!stricmp(p,".INI")) 201 hwndFrame = StartIniEditor(HWND_DESKTOP, 202 fullname, 203 0); 204 } 205 if(!ShowMultimedia(fullname)) 206 hwndFrame = StartMLEEditor(HWND_DESKTOP, 207 1, 208 ((*fullname) ? 209 fullname : 210 NULL), 211 (HWND)0); 212 } 213 if(hwndFrame && WinIsWindow(hab,hwndFrame)) { 214 if(hwndHelp) 215 WinAssociateHelpInstance(hwndHelp,hwndFrame); 216 for(;;) { 217 if(!WinGetMsg(hab,&qmsg,(HWND)0,0,0)) { 218 if(!WinIsWindow(hab,hwndFrame)) 219 break; 220 if(qmsg.hwnd) 221 qmsg.msg = WM_CLOSE; 222 else 223 break; 224 } 225 if(hwndBubble && 226 ((qmsg.msg > (WM_BUTTON1DOWN - 1) && 227 qmsg.msg < (WM_BUTTON3DBLCLK + 1)) || 228 (qmsg.msg > (WM_CHORD - 1) && 229 qmsg.msg < (WM_BUTTON3CLICK + 1))) && 230 WinIsWindowVisible(hwndBubble)) 231 WinShowWindow(hwndBubble,FALSE); 232 WinDispatchMsg(hab,&qmsg); 233 } 234 DosSleep(125L); 235 } 236 } 237 } 238 } 239 } 240 Abort: 129 static CHAR path[CCHMAXPATH]; 130 CHAR *env; 131 FILESTATUS3 fs; 132 133 env = getenv("FM3INI"); 134 if (env && *env) { 135 DosError(FERR_DISABLEHARDERR); 136 if (!DosQueryPathInfo(env, FIL_QUERYFULLNAME, path, sizeof(path))) { 137 DosError(FERR_DISABLEHARDERR); 138 if (!DosQueryPathInfo(path, 139 FIL_STANDARD, &fs, (ULONG) sizeof(fs))) { 140 if (!(fs.attrFile & FILE_DIRECTORY)) { 141 env = strrchr(path, '\\'); 142 if (env) 143 *env = 0; 144 } 145 DosError(FERR_DISABLEHARDERR); 146 if (!DosQueryPathInfo(path, 147 FIL_STANDARD, &fs, (ULONG) sizeof(fs))) { 148 if (fs.attrFile & FILE_DIRECTORY) 149 switch_to(path); 150 } 151 } 152 } 153 } 154 } 155 if (InitFM3DLL(hab, argc, argv)) { 156 if (CheckVersion(VERMAJOR, VERMINOR)) { 157 fAmAV2 = TRUE; 158 if (!*fullname) { 159 strcpy(fullname, "*"); 160 if (!insert_filename(HWND_DESKTOP, 161 fullname, 162 TRUE, 163 FALSE) || !*fullname || *fullname == '*') 164 goto Abort; 165 } 166 if (*fullname) { 167 if (ExecAssociation(HWND_DESKTOP, fullname) == -1) { 168 hwndFrame = StartArcCnr(HWND_DESKTOP, 169 (HWND) 0, fullname, 0, NULL); 170 if (!hwndFrame) { 171 172 CHAR *p = strrchr(fullname, '.'); 173 174 if (p) { 175 if (!stricmp(p, ".INI")) 176 hwndFrame = StartIniEditor(HWND_DESKTOP, fullname, 0); 177 } 178 if (!ShowMultimedia(fullname)) 179 hwndFrame = StartMLEEditor(HWND_DESKTOP, 180 1, 181 ((*fullname) ? 182 fullname : NULL), (HWND) 0); 183 } 184 if (hwndFrame && WinIsWindow(hab, hwndFrame)) { 185 if (hwndHelp) 186 WinAssociateHelpInstance(hwndHelp, hwndFrame); 187 for (;;) { 188 if (!WinGetMsg(hab, &qmsg, (HWND) 0, 0, 0)) { 189 if (!WinIsWindow(hab, hwndFrame)) 190 break; 191 if (qmsg.hwnd) 192 qmsg.msg = WM_CLOSE; 193 else 194 break; 195 } 196 if (hwndBubble && 197 ((qmsg.msg > (WM_BUTTON1DOWN - 1) && 198 qmsg.msg < (WM_BUTTON3DBLCLK + 1)) || 199 (qmsg.msg > (WM_CHORD - 1) && 200 qmsg.msg < (WM_BUTTON3CLICK + 1))) && 201 WinIsWindowVisible(hwndBubble)) 202 WinShowWindow(hwndBubble, FALSE); 203 WinDispatchMsg(hab, &qmsg); 204 } 205 DosSleep(125L); 206 } 207 } 208 } 209 } 210 } 211 Abort: 241 212 DosSleep(125L); 242 213 WinDestroyMsgQueue(hmq); … … 246 217 return 0; 247 218 } 248
Note:
See TracChangeset
for help on using the changeset viewer.