Changeset 551 for trunk/dll/avl.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/avl.c
r537 r551 47 47 #pragma alloc_text(MISC9,quick_find_type,find_type) 48 48 49 static void free_arc_type(ARC_TYPE * pat);49 static void free_arc_type(ARC_TYPE * pat); 50 50 static void fill_listbox(HWND hwnd, BOOL fShowAll, SHORT sOldSelect); 51 51 52 52 //=== quick_find_type() === 53 53 54 ARC_TYPE *quick_find_type(CHAR * filespec, ARC_TYPE *topsig)54 ARC_TYPE *quick_find_type(CHAR * filespec, ARC_TYPE * topsig) 55 55 { 56 56 ARC_TYPE *info, *found = NULL; … … 60 60 load_archivers(); 61 61 p = strrchr(filespec, '.'); 62 if (p) 63 { 62 if (p) { 64 63 p++; 65 64 info = (topsig) ? topsig : arcsighead; 66 while (info) 67 { 68 if (info -> ext && 69 *(info -> ext) && 70 !stricmp(p, info -> ext)) 71 { 65 while (info) { 66 if (info->ext && *(info->ext) && !stricmp(p, info->ext)) { 72 67 found = find_type(filespec, topsig); 73 68 break; 74 69 } 75 info = info ->next;70 info = info->next; 76 71 } 77 72 } … … 89 84 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_DELETEALL, MPVOID, MPVOID); 90 85 91 for (pat = arcsighead; pat; pat = pat -> next) 92 { 86 for (pat = arcsighead; pat; pat = pat->next) { 93 87 /* 94 88 * this inner loop tests for a dup signature entry and assures … … 96 90 * conversion; editing any is okay 97 91 */ 98 if (!fShowAll) 99 { 92 if (!fShowAll) { 100 93 ARC_TYPE *pat2; 101 94 BOOL isDup = FALSE; 95 102 96 for (pat2 = arcsighead; 103 pat2 && pat -> siglen && pat2 != pat && !isDup; 104 pat2 = pat2 -> next) 105 { 106 isDup = pat2 -> siglen == pat -> siglen && 107 !memcmp(pat2 -> signature, pat -> signature, pat -> siglen); 108 } // for 97 pat2 && pat->siglen && pat2 != pat && !isDup; pat2 = pat2->next) { 98 isDup = pat2->siglen == pat->siglen && 99 !memcmp(pat2->signature, pat->signature, pat->siglen); 100 } // for 109 101 if (isDup) 110 102 continue; … … 112 104 113 105 // If caller is editing archivers or entry useful to caller, show in listbox 114 if (fShowAll || (pat -> id && pat -> extract && pat -> create)) 115 { 106 if (fShowAll || (pat->id && pat->extract && pat->create)) { 116 107 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_INSERTITEM, 117 108 MPFROM2SHORT(LIT_END, 0), 118 MPFROMP(pat -> id ? 119 pat -> id : "?")); 120 if (!found && *szDefArc && pat -> id && !strcmp(szDefArc, pat -> id)) 121 { 109 MPFROMP(pat->id ? pat->id : "?")); 110 if (!found && *szDefArc && pat->id && !strcmp(szDefArc, pat->id)) { 122 111 // Highlight default 123 112 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_SELECTITEM, … … 126 115 } 127 116 } 128 else 129 { 117 else { 130 118 // Complain about odd entry 131 if (!pat -> id || !*pat -> id) 132 { 119 if (!pat->id || !*pat->id) { 133 120 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_INSERTITEM, 134 121 MPFROM2SHORT(LIT_END, 0), 135 122 MPFROMP(GetPString(IDS_UNKNOWNUNUSABLETEXT))); 136 123 } 137 else 138 { 124 else { 139 125 CHAR s[81]; 140 sprintf(s, "%0.12s %s", pat -> id, GetPString(IDS_UNUSABLETEXT)); 126 127 sprintf(s, "%0.12s %s", pat->id, GetPString(IDS_UNUSABLETEXT)); 141 128 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_INSERTITEM, 142 MPFROM2SHORT(LIT_END, 0), 143 MPFROMP(s)); 144 } 145 } 146 } // while scanning 129 MPFROM2SHORT(LIT_END, 0), MPFROMP(s)); 130 } 131 } 132 } // while scanning 147 133 148 134 // Try to reselect last selection unless user wants default selection 149 135 if (sOldSelect != LIT_NONE && !found) { 150 SHORT sItemCount = (SHORT)WinSendDlgItemMsg(hwnd,ASEL_LISTBOX,LM_QUERYITEMCOUNT, 151 MPVOID,MPVOID); 136 SHORT sItemCount = 137 (SHORT) WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYITEMCOUNT, 138 MPVOID, MPVOID); 139 152 140 if (sOldSelect >= sItemCount) 153 141 sOldSelect = sItemCount - 1; 154 142 if (sOldSelect >= 0) { 155 143 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_SELECTITEM, 156 144 MPFROMSHORT(sOldSelect), MPFROMSHORT(TRUE)); 157 145 } 158 146 } … … 162 150 } 163 151 164 ARC_TYPE *find_type(CHAR * filespec, ARC_TYPE *topsig)152 ARC_TYPE *find_type(CHAR * filespec, ARC_TYPE * topsig) 165 153 { 166 154 HFILE handle; … … 187 175 OPEN_FLAGS_NOINHERIT | 188 176 OPEN_FLAGS_RANDOMSEQUENTIAL | 189 OPEN_SHARE_DENYNONE | 190 OPEN_ACCESS_READONLY, 191 0L)) 177 OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, 0L)) 192 178 return NULL; 193 179 // Scan signatures 194 for (info = topsig; info; info = info -> next) 195 { 196 if (info -> siglen == 0) 197 { 180 for (info = topsig; info; info = info->next) { 181 if (info->siglen == 0) { 198 182 // No signature -- check extension 199 183 p = strrchr(filespec, '.'); 200 if (p) 201 { 184 if (p) { 202 185 p++; 203 if (info -> ext && 204 *(info -> ext) && 205 !stricmp(p, info -> ext)) 186 if (info->ext && *(info->ext) && !stricmp(p, info->ext)) 206 187 break; // Matched 207 188 … … 211 192 } 212 193 // Try signature match 213 l = info ->siglen;194 l = info->siglen; 214 195 l = min(l, 79); 215 196 if (!DosChgFilePtr(handle, 216 abs(info -> file_offset), 217 (info -> file_offset >= 0L) ? 218 FILE_BEGIN : 219 FILE_END, 220 &len)) 221 { 222 if (!DosRead(handle, 223 buffer, 224 l, 225 &len) && 226 len == l) 227 { 228 if (!memcmp(info -> signature, 229 buffer, 230 l)) 197 abs(info->file_offset), 198 (info->file_offset >= 0L) ? 199 FILE_BEGIN : FILE_END, &len)) { 200 if (!DosRead(handle, buffer, l, &len) && len == l) { 201 if (!memcmp(info->signature, buffer, l)) 231 202 break; // Matched 232 203 … … 241 212 //=== free_arc_type() free allocated ARC_TYPE === 242 213 243 static void free_arc_type(ARC_TYPE * pat)214 static void free_arc_type(ARC_TYPE * pat) 244 215 { 245 if (pat) 246 { 247 xfree(pat -> id); 248 xfree(pat -> ext); 249 xfree(pat -> list); 250 xfree(pat -> extract); 251 xfree(pat -> create); 252 xfree(pat -> move); 253 xfree(pat -> delete); 254 xfree(pat -> signature); 255 xfree(pat -> startlist); 256 xfree(pat -> endlist); 257 xfree(pat -> exwdirs); 258 xfree(pat -> test); 259 xfree(pat -> createrecurse); 260 xfree(pat -> createwdirs); 261 xfree(pat -> movewdirs); 216 if (pat) { 217 xfree(pat->id); 218 xfree(pat->ext); 219 xfree(pat->list); 220 xfree(pat->extract); 221 xfree(pat->create); 222 xfree(pat->move); 223 xfree(pat->delete); 224 xfree(pat->signature); 225 xfree(pat->startlist); 226 xfree(pat->endlist); 227 xfree(pat->exwdirs); 228 xfree(pat->test); 229 xfree(pat->createrecurse); 230 xfree(pat->createwdirs); 231 xfree(pat->movewdirs); 262 232 free(pat); 263 233 } 264 234 } 265 235 266 static UINT cur_line_num; 236 static UINT cur_line_num; // Input file line counter 267 237 268 238 #pragma alloc_text(AVL,load_archivers, get_line_strip_comments, get_line_strip_white) … … 272 242 #define ARCHIVER_LINE_BYTES 256 273 243 274 static PSZ get_line_strip_comments(PSZ pszIn, FILE * fp)244 static PSZ get_line_strip_comments(PSZ pszIn, FILE * fp) 275 245 { 276 246 PSZ psz = xfgets(pszIn, ARCHIVER_LINE_BYTES, fp, pszSrcFile, __LINE__); … … 290 260 //=== get_line_strip_white() read line, strip whitespace === 291 261 292 static PSZ get_line_strip_white(PSZ pszIn, FILE * fp)262 static PSZ get_line_strip_white(PSZ pszIn, FILE * fp) 293 263 { 294 PSZ psz = xfgets_bstripcr(pszIn, ARCHIVER_LINE_BYTES, fp, pszSrcFile, __LINE__); 264 PSZ psz = 265 xfgets_bstripcr(pszIn, ARCHIVER_LINE_BYTES, fp, pszSrcFile, __LINE__); 295 266 296 267 if (psz) … … 329 300 DosEnterCritSec(); 330 301 psz = searchpath(GetPString(IDS_ARCHIVERBB2)); 331 if (!psz || !*psz) 332 { 302 if (!psz || !*psz) { 333 303 DosExitCritSec(); 334 304 return -1; … … 343 313 344 314 // Line 1 must contain number of lines per signature definition 345 if (!get_line_strip_comments(sz, fp)) 346 { 315 if (!get_line_strip_comments(sz, fp)) { 347 316 fclose(fp); 348 317 return -3; … … 357 326 // Need to determine header size and start of trailer 358 327 359 while (!feof(fp)) 360 { 328 while (!feof(fp)) { 361 329 // If reading header 362 330 if (!arcsigs_header_lines) { … … 373 341 // Not a comment, must be start of signatures 374 342 PSZ psz2 = strchr(sz, ';'); 375 if (psz2) { 376 *psz2 = 0; // Chop trailing comment 377 bstripcr(sz); // Strip leading white and trailing white and CR/LF 378 } 379 arcsigs_header_lines = cur_line_num - 1; 343 344 if (psz2) { 345 *psz2 = 0; // Chop trailing comment 346 bstripcr(sz); // Strip leading white and trailing white and CR/LF 347 } 348 arcsigs_header_lines = cur_line_num - 1; 380 349 } 381 350 } … … 383 352 // Reading defintiions 384 353 if (!get_line_strip_comments(sz, fp)) 385 354 break; // EOF 386 355 } 387 356 … … 392 361 per_sig_comment_line_num = cur_line_num; 393 362 394 if (*sz) 395 { 363 if (*sz) { 396 364 // At start of defintion 397 365 398 pat = xmallocz(sizeof(ARC_TYPE), pszSrcFile,__LINE__);366 pat = xmallocz(sizeof(ARC_TYPE), pszSrcFile, __LINE__); 399 367 if (!pat) 400 368 break; 401 pat -> id = xstrdup(sz,pszSrcFile,__LINE__);402 403 pat ->comment_line_num = per_sig_comment_line_num;404 pat ->defn_line_num = cur_line_num;369 pat->id = xstrdup(sz, pszSrcFile, __LINE__); 370 371 pat->comment_line_num = per_sig_comment_line_num; 372 pat->defn_line_num = cur_line_num; 405 373 406 374 if (!get_line_strip_comments(sz, fp)) // line 2 - extension 407 375 break; 408 376 if (*sz) 409 pat -> ext = xstrdup(sz,pszSrcFile,__LINE__);377 pat->ext = xstrdup(sz, pszSrcFile, __LINE__); 410 378 else 411 pat ->ext = NULL;379 pat->ext = NULL; 412 380 if (!get_line_strip_comments(sz, fp)) // line 3 - offset to signature 413 381 break; 414 pat ->file_offset = atol(sz);382 pat->file_offset = atol(sz); 415 383 if (!get_line_strip_comments(sz, fp)) // line 4 - list command 416 384 break; 417 385 if (*sz) 418 pat -> list = xstrdup(sz,pszSrcFile,__LINE__);386 pat->list = xstrdup(sz, pszSrcFile, __LINE__); 419 387 else 420 pat ->list = NULL;421 if (!pat ->list)388 pat->list = NULL; 389 if (!pat->list) 422 390 break; // Must have list command - fixme to complain 423 391 if (!get_line_strip_comments(sz, fp)) // line 5 424 392 break; 425 393 if (*sz) 426 pat -> extract = xstrdup(sz,pszSrcFile,__LINE__);394 pat->extract = xstrdup(sz, pszSrcFile, __LINE__); 427 395 else 428 pat ->extract = NULL;396 pat->extract = NULL; 429 397 if (!get_line_strip_comments(sz, fp)) // line 6 430 398 break; 431 399 if (*sz) 432 pat -> exwdirs = xstrdup(sz,pszSrcFile,__LINE__);400 pat->exwdirs = xstrdup(sz, pszSrcFile, __LINE__); 433 401 else 434 pat ->exwdirs = NULL;402 pat->exwdirs = NULL; 435 403 if (!get_line_strip_comments(sz, fp)) // line 7 436 404 break; 437 405 if (*sz) 438 pat -> test = xstrdup(sz,pszSrcFile,__LINE__);406 pat->test = xstrdup(sz, pszSrcFile, __LINE__); 439 407 else 440 pat ->test = NULL;408 pat->test = NULL; 441 409 if (!get_line_strip_comments(sz, fp)) // line 8 442 410 break; 443 411 if (*sz) 444 pat -> create = xstrdup(sz,pszSrcFile,__LINE__);412 pat->create = xstrdup(sz, pszSrcFile, __LINE__); 445 413 else 446 pat ->create = NULL;414 pat->create = NULL; 447 415 if (!get_line_strip_comments(sz, fp)) // line 9 448 416 break; 449 417 if (*sz) 450 pat -> createwdirs = xstrdup(sz,pszSrcFile,__LINE__);418 pat->createwdirs = xstrdup(sz, pszSrcFile, __LINE__); 451 419 else 452 pat ->createwdirs = NULL;420 pat->createwdirs = NULL; 453 421 if (!get_line_strip_comments(sz, fp)) // line 10 454 422 break; 455 423 if (*sz) 456 pat -> createrecurse = xstrdup(sz,pszSrcFile,__LINE__);424 pat->createrecurse = xstrdup(sz, pszSrcFile, __LINE__); 457 425 else 458 pat ->createrecurse = NULL;426 pat->createrecurse = NULL; 459 427 if (!get_line_strip_comments(sz, fp)) // line 11 460 428 break; 461 429 if (*sz) 462 pat -> move = xstrdup(sz,pszSrcFile,__LINE__);430 pat->move = xstrdup(sz, pszSrcFile, __LINE__); 463 431 else 464 pat ->move = NULL;432 pat->move = NULL; 465 433 if (!get_line_strip_comments(sz, fp)) // line 12 466 434 break; 467 435 if (*sz) 468 pat -> movewdirs = xstrdup(sz,pszSrcFile,__LINE__);436 pat->movewdirs = xstrdup(sz, pszSrcFile, __LINE__); 469 437 else 470 pat ->movewdirs = NULL;438 pat->movewdirs = NULL; 471 439 if (!get_line_strip_comments(sz, fp)) // line 13 472 440 break; 473 441 if (*sz) 474 pat -> delete = xstrdup(sz,pszSrcFile,__LINE__);442 pat->delete = xstrdup(sz, pszSrcFile, __LINE__); 475 443 else 476 pat ->delete = NULL;444 pat->delete = NULL; 477 445 if (!get_line_strip_white(sz, fp)) // line 14 478 446 break; 479 447 i = literal(sz); // Translate \ escapes 480 if (i) 481 { 482 pat -> siglen = i; 483 pat -> signature = xmalloc(i,pszSrcFile,__LINE__); 484 if (!pat -> signature) 448 if (i) { 449 pat->siglen = i; 450 pat->signature = xmalloc(i, pszSrcFile, __LINE__); 451 if (!pat->signature) 485 452 break; 486 memcpy(pat ->signature, sz, i); // signature may not be a string453 memcpy(pat->signature, sz, i); // signature may not be a string 487 454 } 488 455 else { 489 pat ->siglen = 0;490 pat ->signature = NULL;456 pat->siglen = 0; 457 pat->signature = NULL; 491 458 } 492 459 if (!get_line_strip_white(sz, fp)) // line 15 493 460 break; 494 461 if (*sz) 495 pat -> startlist = xstrdup(sz,pszSrcFile,__LINE__);462 pat->startlist = xstrdup(sz, pszSrcFile, __LINE__); 496 463 else 497 pat ->startlist = NULL;464 pat->startlist = NULL; 498 465 if (!get_line_strip_white(sz, fp)) // line 16 499 466 break; 500 467 if (*sz) 501 pat -> endlist = xstrdup(sz,pszSrcFile,__LINE__);468 pat->endlist = xstrdup(sz, pszSrcFile, __LINE__); 502 469 else 503 pat ->endlist = NULL;470 pat->endlist = NULL; 504 471 if (!get_line_strip_comments(sz, fp)) // line 17 505 472 break; 506 pat ->osizepos = atoi(sz);473 pat->osizepos = atoi(sz); 507 474 if (!get_line_strip_comments(sz, fp)) // line 18 508 475 break; 509 pat ->nsizepos = atoi(sz);476 pat->nsizepos = atoi(sz); 510 477 if (!get_line_strip_comments(sz, fp)) // line 19 511 478 break; 512 pat ->fdpos = atoi(sz);479 pat->fdpos = atoi(sz); 513 480 psz = strchr(sz, ','); 514 if (psz) 515 { 481 if (psz) { 516 482 psz++; 517 pat ->datetype = atoi(psz);483 pat->datetype = atoi(psz); 518 484 } 519 485 if (!get_line_strip_comments(sz, fp)) // line 20 520 486 break; 521 pat ->fdflds = atoi(sz);487 pat->fdflds = atoi(sz); 522 488 if (!get_line_strip_comments(sz, fp)) // line 21 523 489 break; 524 pat ->fnpos = atoi(sz);490 pat->fnpos = atoi(sz); 525 491 psz = strchr(sz, ','); 526 if (psz) 527 { 492 if (psz) { 528 493 psz++; 529 pat ->nameislast = (BOOL) (*psz && atol(psz) == 0) ? FALSE : TRUE;494 pat->nameislast = (BOOL) (*psz && atol(psz) == 0) ? FALSE : TRUE; 530 495 psz = strchr(psz, ','); 531 if (psz) 532 { 496 if (psz) { 533 497 psz++; 534 pat ->nameisnext = (BOOL) (*psz && atol(psz) == 0) ? FALSE : TRUE;498 pat->nameisnext = (BOOL) (*psz && atol(psz) == 0) ? FALSE : TRUE; 535 499 psz = strchr(psz, ','); 536 if (psz) 537 { 500 if (psz) { 538 501 psz++; 539 pat ->nameisfirst = (BOOL) (*psz && atol(psz) == 0) ? FALSE : TRUE;502 pat->nameisfirst = (BOOL) (*psz && atol(psz) == 0) ? FALSE : TRUE; 540 503 } 541 504 } 542 505 } 543 506 // Ignore unknown lines - must be newer file format 544 for (i = LINES_PER_ARCSIG; i < lines_per_arcsig; i++) 545 { 507 for (i = LINES_PER_ARCSIG; i < lines_per_arcsig; i++) { 546 508 if (!get_line_strip_comments(sz, fp)) 547 509 break; // Unexpected EOF - fixme to complain … … 551 513 if (!arcsighead) 552 514 arcsighead = patLast = pat; 553 else 554 { 555 patLast -> next = pat; 556 pat -> prev = patLast; 515 else { 516 patLast->next = pat; 517 pat->prev = patLast; 557 518 patLast = pat; 558 519 } 559 pat = NULL; 520 pat = NULL; // Done with this defintion 560 521 561 522 arcsigs_trailer_line_num = cur_line_num + 1; // In case this is last defintion 562 523 per_sig_comment_line_num = 0; 563 } 564 565 } 524 } // if got definition 525 526 } // while more lines 566 527 567 528 fclose(fp); 568 529 569 free_arc_type(pat); 530 free_arc_type(pat); // In case partial definition in progress 570 531 571 532 if (!arcsighead) … … 581 542 #pragma alloc_text(FMARCHIVE,SBoxDlgProc,SDlgListboxSubclassProc) 582 543 583 static MRESULT EXPENTRY SDlgListboxSubclassProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 544 static MRESULT EXPENTRY SDlgListboxSubclassProc(HWND hwnd, ULONG msg, 545 MPARAM mp1, MPARAM mp2) 584 546 { 585 PFNWP pfnOldProc = (PFNWP) WinQueryWindowPtr(hwnd, QWL_USER);547 PFNWP pfnOldProc = (PFNWP) WinQueryWindowPtr(hwnd, QWL_USER); 586 548 587 549 PDRAGITEM pditem; … … 593 555 static PSZ DRM_LBOX = "DRM_LBOX"; 594 556 595 switch (msg) 596 { 557 switch (msg) { 597 558 case WM_BEGINDRAG: 598 559 { … … 607 568 if (cur_ndx != LIT_NONE) { 608 569 pdinfo = DrgAllocDraginfo(1); 609 if (pdinfo) {570 if (pdinfo) { 610 571 pdinfo->usOperation = DO_DEFAULT; 611 572 pdinfo->hwndSource = hwnd; 612 573 613 memset(&ditem, 0,sizeof(DRAGITEM));574 memset(&ditem, 0, sizeof(DRAGITEM)); 614 575 ditem.hwndItem = hwnd; 615 576 ditem.ulItemID = 1; … … 622 583 ditem.fsSupportedOps = DO_MOVEABLE; 623 584 624 memset(&dimage, 0,sizeof(DRAGIMAGE));585 memset(&dimage, 0, sizeof(DRAGIMAGE)); 625 586 dimage.cb = sizeof(DRAGIMAGE); 626 587 dimage.hImage = hptrFile; … … 631 592 dimage.cxOffset = -16; 632 593 dimage.cyOffset = 0; 633 DrgSetDragitem(pdinfo, 634 &ditem, 635 sizeof(DRAGITEM), 636 0); /* Index of DRAGITEM */ 637 hwndDrop = DrgDrag(hwnd, 638 pdinfo, 639 &dimage, 640 1, /* One DRAGIMAGE */ 641 VK_ENDDRAG, 642 NULL); 594 DrgSetDragitem(pdinfo, &ditem, sizeof(DRAGITEM), 0); /* Index of DRAGITEM */ 595 hwndDrop = DrgDrag(hwnd, pdinfo, &dimage, 1, /* One DRAGIMAGE */ 596 VK_ENDDRAG, NULL); 643 597 if (!hwndDrop) 644 Win_Error(hwnd, hwnd,pszSrcFile,__LINE__,"DrgDrag");598 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "DrgDrag"); 645 599 646 600 DrgFreeDraginfo(pdinfo); … … 653 607 case DM_DRAGOVER: 654 608 ok = FALSE; 655 if (!emphasized) 656 { 609 if (!emphasized) { 657 610 POINTL ptl; 658 611 POINTL ptl2; 612 659 613 emphasized = TRUE; 660 614 ptl.x = SHORT1FROMMP(mp2); … … 664 618 // fprintf(stderr, "DRAGOVER mapped x y %d %d to %d %d\n", ptl.x, ptl.y, ptl2.x, ptl2.y); 665 619 WinPostMsg(hwnd, WM_BUTTON1CLICK, 666 MPFROM2SHORT((SHORT) ptl2.x, (SHORT)ptl2.y),620 MPFROM2SHORT((SHORT) ptl2.x, (SHORT) ptl2.y), 667 621 MPFROM2SHORT(HT_NORMAL, KC_NONE)); 668 622 // fprintf(stderr, "DRAGOVER posted 0x%x WM_BUTTON1CLICK x y %d %d\n", hwnd, ptl2.x, ptl2.y); 669 623 } 670 pdinfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */624 pdinfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ 671 625 if (pdinfo) { 672 626 DrgAccessDraginfo(pdinfo); 673 pditem = DrgQueryDragitemPtr(pdinfo, 0);627 pditem = DrgQueryDragitemPtr(pdinfo, 0); 674 628 /* Check valid rendering mechanisms and data format */ 675 629 ok = DrgVerifyRMF(pditem, DRM_LBOX, NULL); … … 678 632 } 679 633 } 680 return ok ? MRFROM2SHORT(DOR_DROP, DO_MOVE) : MRFROM2SHORT(DOR_NEVERDROP, 0); 634 return ok ? MRFROM2SHORT(DOR_DROP, DO_MOVE) : MRFROM2SHORT(DOR_NEVERDROP, 635 0); 681 636 682 637 case DM_DRAGLEAVE: 683 if (emphasized) 684 { 638 if (emphasized) { 685 639 emphasized = FALSE; 686 640 // fixme to draw listbox item emphasized … … 699 653 // fprintf(stderr, "DROP\n"); 700 654 fflush(stderr); 701 if (emphasized) 702 { 655 if (emphasized) { 703 656 emphasized = FALSE; 704 657 // DrawTargetEmphasis(hwnd, emphasized); 705 658 } 706 pdinfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */659 pdinfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ 707 660 if (pdinfo) { 708 661 DrgAccessDraginfo(pdinfo); 709 pditem = DrgQueryDragitemPtr(pdinfo, 0);662 pditem = DrgQueryDragitemPtr(pdinfo, 0); 710 663 if (!pditem) 711 Win_Error(hwnd, hwnd,pszSrcFile,__LINE__,"DM_DROP");664 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "DM_DROP"); 712 665 /* Check valid rendering mechanisms and data */ 713 ok = DrgVerifyRMF(pditem,DRM_LBOX,NULL) && ~pditem->fsControl & DC_PREPARE; 666 ok = DrgVerifyRMF(pditem, DRM_LBOX, NULL) 667 && ~pditem->fsControl & DC_PREPARE; 714 668 if (ok) { 715 669 // ret = FullDrgName(pditem,buffer,buflen); 716 670 /* note: targetfail is returned to source for all items */ 717 DrgSendTransferMsg(pdinfo->hwndSource, DM_ENDCONVERSATION,671 DrgSendTransferMsg(pdinfo->hwndSource, DM_ENDCONVERSATION, 718 672 MPFROMLONG(pditem->ulItemID), 719 673 MPFROMLONG(DMFL_TARGETSUCCESSFUL)); … … 723 677 } 724 678 return 0; 725 } 679 } // switch 726 680 return pfnOldProc ? pfnOldProc(hwnd, msg, mp1, mp2) : 727 681 WinDefWindowProc(hwnd, msg, mp1, mp2); 728 682 } 729 683 … … 734 688 MRESULT EXPENTRY SBoxDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 735 689 { 736 ARC_TYPE **ppatReturn; 690 ARC_TYPE **ppatReturn; // Where to return selected archiver 737 691 ARC_TYPE *pat; 738 692 SHORT sSelect; 739 693 SHORT sItemCount; 740 694 CHAR szItemText[256]; 741 CHAR szPCItemText[256]; 695 CHAR szPCItemText[256]; // Parent or child item text 742 696 SHORT i; 743 697 APIRET apiret; … … 746 700 static SHORT sLastSelect = LIT_NONE; 747 701 748 switch (msg) 749 { 702 switch (msg) { 750 703 case WM_INITDLG: 751 704 if (!arcsigsloaded) 752 705 load_archivers(); 753 if (!(ARC_TYPE **)mp2) 754 { 706 if (!(ARC_TYPE **) mp2) { 755 707 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 756 708 WinDismissDlg(hwnd, 0); … … 762 714 * If NULL, all definitions are shown 763 715 */ 764 ppatReturn = (ARC_TYPE **) mp2;716 ppatReturn = (ARC_TYPE **) mp2; 765 717 fShowAll = *ppatReturn == NULL; 766 718 if (*ppatReturn) 767 719 *ppatReturn = arcsighead; // Preset to first 768 WinSetWindowPtr(hwnd, QWL_USER, (PVOID) ppatReturn);720 WinSetWindowPtr(hwnd, QWL_USER, (PVOID) ppatReturn); 769 721 fill_listbox(hwnd, fShowAll, sLastSelect); 770 722 … … 774 726 PFNWP pfn = WinSubclassWindow(hwnd2, 775 727 SDlgListboxSubclassProc); 728 776 729 WinSetWindowPtr(hwnd2, QWL_USER, (PVOID) pfn); 777 730 } … … 782 735 case WM_COMMAND: 783 736 ppatReturn = (ARC_TYPE **) WinQueryWindowPtr(hwnd, QWL_USER); 784 switch (SHORT1FROMMP(mp1)) 785 { 737 switch (SHORT1FROMMP(mp1)) { 786 738 case DID_OK: 787 sSelect = (SHORT)WinSendDlgItemMsg(hwnd, 788 ASEL_LISTBOX, 789 LM_QUERYSELECTION, 790 MPFROMSHORT(LIT_FIRST), 791 MPVOID); 792 if (sSelect == LIT_NONE) 793 { 794 Runtime_Error(pszSrcFile, __LINE__, "list empty"); 739 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 740 ASEL_LISTBOX, 741 LM_QUERYSELECTION, 742 MPFROMSHORT(LIT_FIRST), MPVOID); 743 if (sSelect == LIT_NONE) { 744 Runtime_Error(pszSrcFile, __LINE__, "list empty"); 795 745 return 0; 796 746 } 797 747 pat = arcsighead; 798 if (*ppatReturn) 799 { 748 if (*ppatReturn) { 800 749 // If dups hidden, find archiver with matching id 801 750 *szItemText = 0; … … 804 753 if (!*szItemText) 805 754 pat = NULL; 806 else 807 { 808 for (;pat; pat = pat -> next) 809 { 810 if (pat -> id && !strcmp(szItemText, pat -> id)) 811 break; // Found it 812 } 813 } 814 } 815 else 816 { 755 else { 756 for (; pat; pat = pat->next) { 757 if (pat->id && !strcmp(szItemText, pat->id)) 758 break; // Found it 759 } 760 } 761 } 762 else { 817 763 // If dups not hidden, lookup by count 818 for (i = 0; pat && i < sSelect; i++, pat = pat -> next) 819 ; // Scan 820 } 821 if (pat && (!*ppatReturn || 822 (pat -> id && pat -> extract && pat -> create))) 823 { 764 for (i = 0; pat && i < sSelect; i++, pat = pat->next) ; // Scan 765 } 766 if (pat && (!*ppatReturn || (pat->id && pat->extract && pat->create))) { 824 767 *ppatReturn = pat; 825 768 } 826 else 827 { 828 Runtime_Error(pszSrcFile, __LINE__, "no match"); 769 else { 770 Runtime_Error(pszSrcFile, __LINE__, "no match"); 829 771 // Refuse to select 830 772 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_SELECTITEM, … … 841 783 hwnd, 842 784 GetPString(IDS_ADCHANGESINMEMTEXT), 843 GetPString(IDS_ADREWRITETEXT), 844 NullStr) == 845 MBID_YES) { 785 GetPString(IDS_ADREWRITETEXT), NullStr) == MBID_YES) { 846 786 PSZ ab2 = searchpath(GetPString(IDS_ARCHIVERBB2)); // Rewrite without prompting 787 847 788 rewrite_archiverbb2(ab2); 848 789 } 849 790 } 850 sSelect = (SHORT)WinSendDlgItemMsg(hwnd, 851 ASEL_LISTBOX, 852 LM_QUERYSELECTION, 853 MPFROMSHORT(LIT_FIRST), 854 MPVOID); 791 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 792 ASEL_LISTBOX, 793 LM_QUERYSELECTION, 794 MPFROMSHORT(LIT_FIRST), MPVOID); 855 795 if (sSelect != LIT_NONE) 856 796 sLastSelect = sSelect; 857 797 *ppatReturn = NULL; 858 798 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); // fixme to understand why needed … … 860 800 861 801 case ASEL_PB_ADD: 862 sSelect = (SHORT)WinSendDlgItemMsg(hwnd, 863 ASEL_LISTBOX, 864 LM_QUERYSELECTION, 865 MPFROMSHORT(LIT_FIRST), 866 MPVOID); 802 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 803 ASEL_LISTBOX, 804 LM_QUERYSELECTION, 805 MPFROMSHORT(LIT_FIRST), MPVOID); 867 806 if (sSelect != LIT_NONE) { 868 807 ARCDUMP ad; 869 memset(&ad,0,sizeof(ARCDUMP)); 870 ad.info = xmallocz(sizeof(ARC_TYPE),pszSrcFile,__LINE__); 808 809 memset(&ad, 0, sizeof(ARCDUMP)); 810 ad.info = xmallocz(sizeof(ARC_TYPE), pszSrcFile, __LINE__); 871 811 if (ad.info) { 872 812 if (!WinDlgBox(HWND_DESKTOP, 873 813 hwnd, 874 814 ArcReviewDlgProc, 875 FM3ModHandle, 876 AD_FRAME, 877 MPFROMP(&ad))) 878 { 815 FM3ModHandle, AD_FRAME, MPFROMP(&ad))) { 879 816 free(ad.info); 880 817 } 881 818 else { 882 819 // Find self - assume all archivers listed since we are editing 883 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) 884 ; // Find self 820 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) ; // Find self 885 821 886 822 if (!pat) { 887 823 if (arcsighead) 888 824 Runtime_Error(pszSrcFile, __LINE__, pszCantFindMsg, sSelect); 889 825 else 890 826 arcsighead = ad.info; … … 906 842 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_INSERTITEM, 907 843 MPFROM2SHORT(sSelect, 0), 908 MPFROMP(ad.info -> id ? ad.info ->id : "?"));844 MPFROMP(ad.info->id ? ad.info->id : "?")); 909 845 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_SELECTITEM, 910 846 MPFROMSHORT(sSelect - 1), MPFROMSHORT(TRUE)); … … 915 851 return 0; 916 852 case ASEL_PB_DELETE: 917 sSelect = (SHORT)WinSendDlgItemMsg(hwnd, 918 ASEL_LISTBOX, 919 LM_QUERYSELECTION, 920 MPFROMSHORT(LIT_FIRST), 921 MPVOID); 853 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 854 ASEL_LISTBOX, 855 LM_QUERYSELECTION, 856 MPFROMSHORT(LIT_FIRST), MPVOID); 922 857 if (sSelect != LIT_NONE) { 923 858 // Find self - assume all archivers listed since we are editing 924 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) 925 ; // Find self 859 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) ; // Find self 926 860 927 861 if (!pat) 928 862 Runtime_Error(pszSrcFile, __LINE__, pszCantFindMsg, sSelect); 929 863 else { 930 864 // Delete current … … 943 877 arcsigsmodified = TRUE; 944 878 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_DELETEITEM, 945 MPFROM2SHORT(sSelect, 0), 946 MPVOID);947 sItemCount = (SHORT)WinSendDlgItemMsg(hwnd,ASEL_LISTBOX,LM_QUERYITEMCOUNT,948 MPVOID,MPVOID);879 MPFROM2SHORT(sSelect, 0), MPVOID); 880 sItemCount = 881 (SHORT) WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYITEMCOUNT, 882 MPVOID, MPVOID); 949 883 if (sSelect >= sItemCount) 950 884 sSelect--; … … 956 890 return 0; 957 891 case ASEL_PB_UP: 958 sSelect = (SHORT)WinSendDlgItemMsg(hwnd, 959 ASEL_LISTBOX, 960 LM_QUERYSELECTION, 961 MPFROMSHORT(LIT_FIRST), 962 MPVOID); 892 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 893 ASEL_LISTBOX, 894 LM_QUERYSELECTION, 895 MPFROMSHORT(LIT_FIRST), MPVOID); 963 896 if (sSelect != LIT_NONE && sSelect > 0) { 964 897 // Find self - assume all archivers listed since we are editing 965 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) 966 ; // Find self 898 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) ; // Find self 967 899 if (!pat || !pat->prev) 968 900 Runtime_Error(pszSrcFile, __LINE__, pszCantFindMsg, sSelect); 969 901 else { 970 902 ARC_TYPE *patGDad; 971 903 ARC_TYPE *patDad; 972 904 ARC_TYPE *patChild; 905 973 906 patChild = pat->next; 974 907 patDad = pat->prev; … … 991 924 MPFROM2SHORT(sSelect, 255), MPFROMP(szItemText)); 992 925 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYITEMTEXT, 993 MPFROM2SHORT(sSelect - 1, 255), MPFROMP(szPCItemText)); 926 MPFROM2SHORT(sSelect - 1, 255), 927 MPFROMP(szPCItemText)); 994 928 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_SETITEMTEXT, 995 929 MPFROMSHORT(sSelect), MPFROMP(szPCItemText)); … … 1003 937 return 0; 1004 938 case ASEL_PB_DOWN: 1005 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,ASEL_LISTBOX,LM_QUERYSELECTION, 1006 MPFROMSHORT(LIT_FIRST),MPVOID); 1007 sItemCount = (SHORT)WinSendDlgItemMsg(hwnd,ASEL_LISTBOX,LM_QUERYITEMCOUNT, 1008 MPVOID,MPVOID); 939 sSelect = 940 (SHORT) WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYSELECTION, 941 MPFROMSHORT(LIT_FIRST), MPVOID); 942 sItemCount = 943 (SHORT) WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYITEMCOUNT, 944 MPVOID, MPVOID); 1009 945 if (sSelect != LIT_NONE && sSelect < sItemCount - 1) { 1010 946 // Find self - assume all archivers listed since we are editing 1011 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) 1012 ; // Find self1013 if (!pat || !pat->next)1014 Runtime_Error(pszSrcFile, __LINE__, "Can't find item %d of %d",sSelect, sItemCount);947 for (i = 0, pat = arcsighead; pat && i < sSelect; pat = pat->next, i++) ; // Find self 948 if (!pat || !pat->next) 949 Runtime_Error(pszSrcFile, __LINE__, "Can't find item %d of %d", 950 sSelect, sItemCount); 1015 951 else { 1016 952 ARC_TYPE *patDad; 1017 953 ARC_TYPE *patChild; 954 1018 955 patDad = pat->prev; 1019 956 patChild = pat->next; … … 1024 961 if (patDad) { 1025 962 patDad->next = patChild; 1026 patChild->prev =patDad;963 patChild->prev = patDad; 1027 964 } 1028 965 else { 1029 966 arcsighead = patChild; 1030 patChild->prev =NULL;967 patChild->prev = NULL; 1031 968 } 1032 969 … … 1034 971 MPFROM2SHORT(sSelect, 255), MPFROMP(szItemText)); 1035 972 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYITEMTEXT, 1036 MPFROM2SHORT(sSelect + 1, 255), MPFROMP(szPCItemText)); 973 MPFROM2SHORT(sSelect + 1, 255), 974 MPFROMP(szPCItemText)); 1037 975 WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_SETITEMTEXT, 1038 976 MPFROMSHORT(sSelect), MPFROMP(szPCItemText)); … … 1048 986 case ASEL_PB_REVERT: 1049 987 // Reload without checking in case changed outside 1050 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,ASEL_LISTBOX,LM_QUERYSELECTION, 1051 MPFROMSHORT(LIT_FIRST),MPVOID); 988 sSelect = 989 (SHORT) WinSendDlgItemMsg(hwnd, ASEL_LISTBOX, LM_QUERYSELECTION, 990 MPFROMSHORT(LIT_FIRST), MPVOID); 1052 991 load_archivers(); 1053 992 fill_listbox(hwnd, TRUE, sSelect); … … 1056 995 case IDM_HELP: 1057 996 if (hwndHelp) { 1058 WinSendMsg(hwndHelp, 1059 HM_DISPLAY_HELP, 1060 MPFROM2SHORT(HELP_EDITARC,0), // fixme to be HELP_SELARC 1061 MPFROMSHORT(HM_RESOURCEID)); 997 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, MPFROM2SHORT(HELP_EDITARC, 0), // fixme to be HELP_SELARC 998 MPFROMSHORT(HM_RESOURCEID)); 1062 999 } 1063 1000 } … … 1090 1027 #pragma alloc_text(ARCCNRS,ArcDateTime) 1091 1028 1092 BOOL ArcDateTime(CHAR * dt, INT type, CDATE *cdate, CTIME *ctime)1029 BOOL ArcDateTime(CHAR * dt, INT type, CDATE * cdate, CTIME * ctime) 1093 1030 { 1094 1031 INT x; … … 1096 1033 CHAR *p, *pp, *pd; 1097 1034 1098 if (dt && cdate && ctime) 1099 { 1035 if (dt && cdate && ctime) { 1100 1036 memset(cdate, 0, sizeof(CDATE)); 1101 1037 memset(ctime, 0, sizeof(CTIME)); 1102 if (type) 1103 { 1038 if (type) { 1104 1039 p = dt; 1105 1040 while (*p && *p == ' ') 1106 1041 p++; 1107 1042 pd = dt; 1108 switch (type) 1109 { 1043 switch (type) { 1110 1044 case 1: 1111 cdate ->month = atoi(pd);1045 cdate->month = atoi(pd); 1112 1046 p = to_delim(pd, "-/."); 1113 if (p) 1114 { 1047 if (p) { 1115 1048 p++; 1116 cdate ->day = atoi(p);1049 cdate->day = atoi(p); 1117 1050 pd = p; 1118 1051 p = to_delim(pd, "-/."); 1119 if (p) 1120 { 1052 if (p) { 1121 1053 p++; 1122 cdate ->year = atoi(p);1123 if (cdate -> year > 80 && cdate ->year < 1900)1124 cdate ->year += 1900;1125 else if (cdate ->year < 1900)1126 cdate ->year += 2000;1054 cdate->year = atoi(p); 1055 if (cdate->year > 80 && cdate->year < 1900) 1056 cdate->year += 1900; 1057 else if (cdate->year < 1900) 1058 cdate->year += 2000; 1127 1059 ret = TRUE; 1128 1060 p = strchr(p, ' '); 1129 if (p) 1130 { 1061 if (p) { 1131 1062 while (*p && *p == ' ') 1132 1063 p++; 1133 ctime ->hours = atoi(p);1064 ctime->hours = atoi(p); 1134 1065 p = to_delim(pd, ":."); 1135 if (p) 1136 { 1066 if (p) { 1137 1067 p++; 1138 ctime ->minutes = atoi(p);1068 ctime->minutes = atoi(p); 1139 1069 p = to_delim(pd, ":."); 1140 if (p) 1141 { 1070 if (p) { 1142 1071 p++; 1143 ctime ->seconds = atoi(p);1072 ctime->seconds = atoi(p); 1144 1073 } 1145 1074 } … … 1150 1079 1151 1080 case 2: 1152 cdate ->day = atoi(p);1081 cdate->day = atoi(p); 1153 1082 p = strchr(p, ' '); 1154 if (p) 1155 { 1083 if (p) { 1156 1084 p++; 1157 for (x = 0; x < 12; x++) 1158 { 1085 for (x = 0; x < 12; x++) { 1159 1086 if (!strnicmp(p, GetPString(IDS_JANUARY + x), 3)) 1160 1087 break; 1161 1088 } 1162 if (x < 12) 1163 { 1164 cdate -> month = x; 1089 if (x < 12) { 1090 cdate->month = x; 1165 1091 p = strchr(p, ' '); 1166 if (p) 1167 { 1092 if (p) { 1168 1093 p++; 1169 cdate ->year = atoi(p);1170 if (cdate -> year > 80 && cdate ->year < 1900)1171 cdate ->year += 1900;1172 else if (cdate ->year < 1900)1173 cdate ->year += 2000;1094 cdate->year = atoi(p); 1095 if (cdate->year > 80 && cdate->year < 1900) 1096 cdate->year += 1900; 1097 else if (cdate->year < 1900) 1098 cdate->year += 2000; 1174 1099 ret = TRUE; 1175 1100 p = strchr(p, ' '); 1176 if (p) 1177 { 1101 if (p) { 1178 1102 while (*p && *p == ' ') 1179 1103 p++; 1180 ctime ->hours = atoi(p);1104 ctime->hours = atoi(p); 1181 1105 p = to_delim(pd, ":."); 1182 if (p) 1183 { 1106 if (p) { 1184 1107 p++; 1185 ctime ->minutes = atoi(p);1108 ctime->minutes = atoi(p); 1186 1109 p = to_delim(pd, ":."); 1187 if (p) 1188 { 1110 if (p) { 1189 1111 p++; 1190 ctime ->seconds = atoi(p);1112 ctime->seconds = atoi(p); 1191 1113 } 1192 1114 } … … 1198 1120 1199 1121 case 3: 1200 cdate ->day = atoi(p);1122 cdate->day = atoi(p); 1201 1123 p = strchr(p, ' '); 1202 if (p) 1203 { 1124 if (p) { 1204 1125 p++; 1205 for (x = 0; x < 12; x++) 1206 { 1126 for (x = 0; x < 12; x++) { 1207 1127 if (!strnicmp(p, GetPString(IDS_JANUARY + x), 3)) 1208 1128 break; 1209 1129 } 1210 if (x < 12) 1211 { 1212 cdate -> month = x; 1130 if (x < 12) { 1131 cdate->month = x; 1213 1132 p = strchr(p, ' '); 1214 if (p) 1215 { 1133 if (p) { 1216 1134 p++; 1217 cdate ->year = atoi(p);1218 if (cdate -> year > 80 && cdate ->year < 1900)1219 cdate ->year += 1900;1220 else if (cdate ->year < 1900)1221 cdate ->year += 2000;1135 cdate->year = atoi(p); 1136 if (cdate->year > 80 && cdate->year < 1900) 1137 cdate->year += 1900; 1138 else if (cdate->year < 1900) 1139 cdate->year += 2000; 1222 1140 ret = TRUE; 1223 1141 p = strchr(p, ' '); 1224 if (p) 1225 { 1142 if (p) { 1226 1143 while (*p && *p == ' ') 1227 1144 p++; 1228 ctime ->hours = atoi(p);1145 ctime->hours = atoi(p); 1229 1146 p = to_delim(pd, ":."); 1230 if (p) 1231 { 1147 if (p) { 1232 1148 p++; 1233 1149 pp = p; 1234 ctime ->minutes = atoi(p);1150 ctime->minutes = atoi(p); 1235 1151 p = to_delim(pd, ":."); 1236 if (p) 1237 { 1152 if (p) { 1238 1153 p++; 1239 ctime ->seconds = atoi(p);1154 ctime->seconds = atoi(p); 1240 1155 p += 2; 1241 1156 if (toupper(*p) == 'P') 1242 ctime ->hours += 12;1157 ctime->hours += 12; 1243 1158 } 1244 else 1245 { 1159 else { 1246 1160 p = pp; 1247 1161 p += 2; 1248 1162 if (toupper(*p) == 'P') 1249 ctime ->hours += 12;1163 ctime->hours += 12; 1250 1164 } 1251 1165 } … … 1257 1171 1258 1172 case 4: 1259 cdate ->year = atoi(p);1260 if (cdate -> year > 80 && cdate ->year < 1900)1261 cdate ->year += 1900;1262 else if (cdate ->year < 1900)1263 cdate ->year += 2000;1173 cdate->year = atoi(p); 1174 if (cdate->year > 80 && cdate->year < 1900) 1175 cdate->year += 1900; 1176 else if (cdate->year < 1900) 1177 cdate->year += 2000; 1264 1178 p = to_delim(pd, "-/."); 1265 if (p) 1266 { 1179 if (p) { 1267 1180 p++; 1268 cdate ->month = atoi(p);1181 cdate->month = atoi(p); 1269 1182 pd = p; 1270 1183 p = to_delim(pd, "-/."); 1271 if (p) 1272 { 1184 if (p) { 1273 1185 p++; 1274 cdate ->day = atoi(p);1186 cdate->day = atoi(p); 1275 1187 ret = TRUE; 1276 1188 p = strchr(p, ' '); 1277 if (p) 1278 { 1189 if (p) { 1279 1190 while (*p && *p == ' ') 1280 1191 p++; 1281 ctime ->hours = atoi(p);1192 ctime->hours = atoi(p); 1282 1193 p = to_delim(pd, ":."); 1283 if (p) 1284 { 1194 if (p) { 1285 1195 p++; 1286 ctime ->minutes = atoi(p);1196 ctime->minutes = atoi(p); 1287 1197 p = to_delim(pd, ":."); 1288 if (p) 1289 { 1198 if (p) { 1290 1199 p++; 1291 ctime ->seconds = atoi(p);1200 ctime->seconds = atoi(p); 1292 1201 } 1293 1202 } … … 1298 1207 1299 1208 case 5: 1300 cdate ->day = atoi(pd);1209 cdate->day = atoi(pd); 1301 1210 p = to_delim(pd, "-/."); 1302 if (p) 1303 { 1211 if (p) { 1304 1212 p++; 1305 cdate ->month = atoi(p);1213 cdate->month = atoi(p); 1306 1214 pd = p; 1307 1215 p = to_delim(pd, "-/."); 1308 if (p) 1309 { 1216 if (p) { 1310 1217 p++; 1311 cdate ->year = atoi(p);1312 if (cdate -> year > 80 && cdate ->year < 1900)1313 cdate ->year += 1900;1314 else if (cdate ->year < 1900)1315 cdate ->year += 2000;1218 cdate->year = atoi(p); 1219 if (cdate->year > 80 && cdate->year < 1900) 1220 cdate->year += 1900; 1221 else if (cdate->year < 1900) 1222 cdate->year += 2000; 1316 1223 ret = TRUE; 1317 1224 p = strchr(p, ' '); 1318 if (p) 1319 { 1225 if (p) { 1320 1226 while (*p && *p == ' ') 1321 1227 p++; 1322 ctime ->hours = atoi(p);1228 ctime->hours = atoi(p); 1323 1229 p = to_delim(pd, ":."); 1324 if (p) 1325 { 1230 if (p) { 1326 1231 p++; 1327 ctime ->minutes = atoi(p);1232 ctime->minutes = atoi(p); 1328 1233 p = to_delim(pd, ":."); 1329 if (p) 1330 { 1234 if (p) { 1331 1235 p++; 1332 ctime ->seconds = atoi(p);1236 ctime->seconds = atoi(p); 1333 1237 } 1334 1238 }
Note:
See TracChangeset
for help on using the changeset viewer.