Changeset 551 for trunk/dll/eas.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/eas.c
r382 r551 59 59 register HOLDFEA *info = NULL; 60 60 61 if (eaname && *eaname) 62 { 61 if (eaname && *eaname) { 63 62 info = head; 64 while (info) 65 { 66 if (!strcmp(info -> name, eaname)) 63 while (info) { 64 if (!strcmp(info->name, eaname)) 67 65 return info; 68 info = info ->next;66 info = info->next; 69 67 } 70 68 } … … 77 75 HOLDFEA *head; 78 76 CHAR *filename; 79 static CHAR *forbidden[] = 80 {".ASSOCTABLE", 81 ".CLASSINFO", 82 ".ICON", 83 ".CODEPAGE", 84 ""}; 85 static RESERVEDEAS restypes[] = 86 {".TYPE", EAT_MVMT, 87 ".SUBJECT", EAT_ASCII, 88 ".COMMENTS", EAT_MVMT, 89 ".KEYPHRASES", EAT_MVMT, 90 ".HISTORY", EAT_MVMT, 91 ".LONGNAME", EAT_ASCII, 92 ".VERSION", EAT_ASCII, 93 "", 0}; 94 95 switch (msg) 96 { 77 static CHAR *forbidden[] = { ".ASSOCTABLE", 78 ".CLASSINFO", 79 ".ICON", 80 ".CODEPAGE", 81 "" 82 }; 83 static RESERVEDEAS restypes[] = { ".TYPE", EAT_MVMT, 84 ".SUBJECT", EAT_ASCII, 85 ".COMMENTS", EAT_MVMT, 86 ".KEYPHRASES", EAT_MVMT, 87 ".HISTORY", EAT_MVMT, 88 ".LONGNAME", EAT_ASCII, 89 ".VERSION", EAT_ASCII, 90 "", 0 91 }; 92 93 switch (msg) { 97 94 case WM_INITDLG: 98 if (!mp2) 99 { 95 if (!mp2) { 100 96 WinDismissDlg(hwnd, 0); 101 97 break; … … 112 108 113 109 case UM_PAINT: 114 PaintRecessedWindow(WinWindowFromID(hwnd, EAC_TEXT), (HPS) 0, FALSE, FALSE); 110 PaintRecessedWindow(WinWindowFromID(hwnd, EAC_TEXT), (HPS) 0, FALSE, 111 FALSE); 115 112 return 0; 116 113 … … 119 116 120 117 case WM_COMMAND: 121 switch (SHORT1FROMMP(mp1)) 122 { 118 switch (SHORT1FROMMP(mp1)) { 123 119 case DID_OK: 124 120 add = INSTDATA(hwnd); 125 head = add ->head;126 filename = add ->filename;121 head = add->head; 122 filename = add->filename; 127 123 { 128 124 CHAR s[257]; … … 135 131 if (!*s) 136 132 WinDismissDlg(hwnd, 0); 137 else 138 { 139 if (CheckEA(head, s)) 140 { 133 else { 134 if (CheckEA(head, s)) { 141 135 DosBeep(50, 100); 142 136 WinSetDlgItemText(hwnd, EAC_TEXT, … … 144 138 break; 145 139 } 146 for (x = 0; *forbidden[x]; x++) 147 { 148 if (!strcmp(forbidden[x], s)) 149 { 140 for (x = 0; *forbidden[x]; x++) { 141 if (!strcmp(forbidden[x], s)) { 150 142 DosBeep(50, 100); 151 143 WinSetDlgItemText(hwnd, EAC_TEXT, … … 158 150 else if (WinQueryButtonCheckstate(hwnd, EAC_MVMT)) 159 151 type = EAT_MVMT; 160 for (x = 0; *restypes[x].name; x++) 161 { 162 if (!strcmp(restypes[x].name, s)) 163 { 164 if (type != restypes[x].type) 165 { 152 for (x = 0; *restypes[x].name; x++) { 153 if (!strcmp(restypes[x].name, s)) { 154 if (type != restypes[x].type) { 166 155 DosBeep(50, 100); 167 156 WinSetDlgItemText(hwnd, EAC_TEXT, … … 184 173 OBJ_TILE | PAG_COMMIT | PAG_READ | PAG_WRITE); 185 174 if (rc) 186 Dos_Error(MB_CANCEL,rc,HWND_DESKTOP,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 175 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 176 GetPString(IDS_OUTOFMEMORY)); 187 177 else { 188 178 memset(pfealist, 0, ealen + 1); 189 pfealist ->cbList = ealen;190 pfealist ->list[0].oNextEntryOffset = 0L;191 pfealist ->list[0].fEA = 0;192 pfealist ->list[0].cbName = strlen(s);193 strcpy(pfealist ->list[0].szName, s);194 eaval = pfealist ->list[0].szName + strlen(s) + 1;179 pfealist->cbList = ealen; 180 pfealist->list[0].oNextEntryOffset = 0L; 181 pfealist->list[0].fEA = 0; 182 pfealist->list[0].cbName = strlen(s); 183 strcpy(pfealist->list[0].szName, s); 184 eaval = pfealist->list[0].szName + strlen(s) + 1; 195 185 *(USHORT *) eaval = (USHORT) type; 196 186 eaval += sizeof(USHORT); 197 if (type == EAT_MVST || type == EAT_MVMT) 198 { 199 *(USHORT *) eaval = (USHORT) 0; /* codepage */ 187 if (type == EAT_MVST || type == EAT_MVMT) { 188 *(USHORT *) eaval = (USHORT) 0; /* codepage */ 200 189 eaval += sizeof(USHORT); 201 *(USHORT *) eaval = (USHORT) 1; 190 *(USHORT *) eaval = (USHORT) 1; /* number */ 202 191 eaval += sizeof(USHORT); 203 *(USHORT *) eaval = (USHORT) EAT_ASCII; 192 *(USHORT *) eaval = (USHORT) EAT_ASCII; /* type */ 204 193 eaval += sizeof(USHORT); 205 194 } … … 207 196 eaval += sizeof(USHORT); 208 197 memcpy(eaval, GetPString(IDS_FAKETEXT), 4); 209 pfealist ->list[0].cbValue = 4 + (sizeof(USHORT) * 2) +198 pfealist->list[0].cbValue = 4 + (sizeof(USHORT) * 2) + 210 199 ((type == EAT_MVST || 211 type == EAT_MVMT) ? 212 sizeof(USHORT) * 3 : 0); 200 type == EAT_MVMT) ? sizeof(USHORT) * 3 : 0); 213 201 eaop.fpGEA2List = (PGEA2LIST) 0; 214 202 eaop.fpFEA2List = pfealist; … … 230 218 if (hwndHelp) 231 219 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 232 MPFROM2SHORT(HELP_ADDEA, 0), 233 MPFROMSHORT(HM_RESOURCEID)); 220 MPFROM2SHORT(HELP_ADDEA, 0), MPFROMSHORT(HM_RESOURCEID)); 234 221 break; 235 222 } … … 242 229 { 243 230 if (info) 244 HexDump(WinWindowFromID(hwnd, EA_HEXDUMP), info -> value, info ->cbValue);231 HexDump(WinWindowFromID(hwnd, EA_HEXDUMP), info->value, info->cbValue); 245 232 } 246 233 … … 254 241 255 242 WinSendMsg(hwnd, LM_DELETEALL, MPVOID, MPVOID); 256 if (cbValue) 257 { 243 if (cbValue) { 258 244 pp = p = value; 259 while (x < cbValue) 260 { 245 while (x < cbValue) { 261 246 y = x; 262 247 sprintf(s, "%04lx ", x); 263 248 a = s + 6; 264 do 265 { 249 do { 266 250 sprintf(a, "%02hx ", *p); 267 251 a += 3; … … 270 254 } 271 255 while (x < cbValue && (x % 16)); 272 if (x % 16) 273 { 256 if (x % 16) { 274 257 z = x; 275 while (z % 16) 276 { 258 while (z % 16) { 277 259 *a++ = ' '; 278 260 *a++ = ' '; … … 283 265 *a++ = ' '; 284 266 p = pp; 285 do 286 { 267 do { 287 268 if (*p) 288 269 *a++ = *p++; 289 else 290 { 270 else { 291 271 *a++ = '.'; 292 272 p++; … … 323 303 eap = (EAPROCDATA *) WinQueryWindowPtr(hwnd, 0); 324 304 325 switch (msg) 326 { 305 switch (msg) { 327 306 case WM_INITDLG: 328 if (!mp2) 329 { 307 if (!mp2) { 330 308 WinDismissDlg(hwnd, 0); 331 309 break; 332 310 } 333 eap = xmalloc(sizeof(EAPROCDATA),pszSrcFile,__LINE__); 334 if (!eap) 335 { 311 eap = xmalloc(sizeof(EAPROCDATA), pszSrcFile, __LINE__); 312 if (!eap) { 336 313 WinDismissDlg(hwnd, 0); 337 314 break; … … 340 317 WinDefDlgProc(hwnd, WM_SETICON, MPFROMLONG(hptrIcon), MPVOID); 341 318 memset(eap, 0, sizeof(EAPROCDATA)); 342 eap ->size = sizeof(EAPROCDATA);343 eap ->list = (CHAR **) mp2;319 eap->size = sizeof(EAPROCDATA); 320 eap->list = (CHAR **) mp2; 344 321 WinSetWindowPtr(hwnd, 0, (PVOID) eap); 345 322 WinSendDlgItemMsg(hwnd, 346 EA_ENTRY, 347 EM_SETTEXTLIMIT, 348 MPFROM2SHORT(40, 0), 349 MPVOID); 350 MLEsetlimit(WinWindowFromID(hwnd, EA_MLE), 351 32767L); 352 MLEsetformat(WinWindowFromID(hwnd, EA_MLE), 353 MLFIE_NOTRANS); 323 EA_ENTRY, EM_SETTEXTLIMIT, MPFROM2SHORT(40, 0), MPVOID); 324 MLEsetlimit(WinWindowFromID(hwnd, EA_MLE), 32767L); 325 MLEsetformat(WinWindowFromID(hwnd, EA_MLE), MLFIE_NOTRANS); 354 326 { 355 327 INT x; … … 357 329 CHAR s[CCHMAXPATH]; 358 330 359 for (x = 0; eap -> list[x]; x++) 360 { 361 if (DosQueryPathInfo(eap -> list[x], 362 FIL_QUERYFULLNAME, 363 s, 364 sizeof(s))) 365 strcpy(s, eap -> list[x]); 331 for (x = 0; eap->list[x]; x++) { 332 if (DosQueryPathInfo(eap->list[x], FIL_QUERYFULLNAME, s, sizeof(s))) 333 strcpy(s, eap->list[x]); 366 334 if (IsFile(s) != -1) 367 335 WinSendDlgItemMsg(hwnd, 368 336 EA_NAMES, 369 337 LM_INSERTITEM, 370 MPFROM2SHORT(LIT_SORTASCENDING, 0), 371 MPFROMP(s)); 338 MPFROM2SHORT(LIT_SORTASCENDING, 0), MPFROMP(s)); 372 339 } 373 340 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 374 341 EA_NAMES, 375 LM_QUERYITEMCOUNT, 376 MPVOID, 377 MPVOID); 342 LM_QUERYITEMCOUNT, MPVOID, MPVOID); 378 343 if (sSelect > 0) 379 344 WinSendDlgItemMsg(hwnd, 380 345 EA_NAMES, 381 346 LM_SELECTITEM, 382 MPFROM2SHORT(0, 0), 383 MPFROMSHORT(TRUE)); 347 MPFROM2SHORT(0, 0), MPFROMSHORT(TRUE)); 384 348 else 385 349 WinDismissDlg(hwnd, 0); … … 388 352 389 353 case UM_SETDIR: 390 if (*eap -> filename) 391 { 392 if (eap -> head) 393 Free_FEAList(eap -> head); 394 eap -> head = GetFileEAs(eap -> filename, 395 FALSE, 396 FALSE); 397 if (!isalpha(*eap -> filename) || 398 (driveflags[toupper(*eap -> filename) - 'A'] & DRIVE_NOTWRITEABLE)) 399 { 354 if (*eap->filename) { 355 if (eap->head) 356 Free_FEAList(eap->head); 357 eap->head = GetFileEAs(eap->filename, FALSE, FALSE); 358 if (!isalpha(*eap->filename) || 359 (driveflags[toupper(*eap->filename) - 'A'] & DRIVE_NOTWRITEABLE)) { 400 360 WinEnableWindow(WinWindowFromID(hwnd, EA_CHANGE), FALSE); 401 361 WinEnableWindow(WinWindowFromID(hwnd, EA_ADD), FALSE); 402 362 WinEnableWindow(WinWindowFromID(hwnd, EA_DELETE), FALSE); 403 363 } 404 else 405 { 364 else { 406 365 WinEnableWindow(WinWindowFromID(hwnd, EA_CHANGE), TRUE); 407 366 WinEnableWindow(WinWindowFromID(hwnd, EA_ADD), TRUE); … … 422 381 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), FALSE); 423 382 WinShowWindow(WinWindowFromID(hwnd, EA_DELETE), FALSE); 424 eap -> current = NULL; 425 if (eap -> head) 426 { 383 eap->current = NULL; 384 if (eap->head) { 427 385 WinSetDlgItemText(hwnd, EA_TEXT, NullStr); 428 info = eap -> head; 429 while (info) 430 { 386 info = eap->head; 387 while (info) { 431 388 WinSendDlgItemMsg(hwnd, EA_LISTBOX, LM_INSERTITEM, 432 MPFROM2SHORT(LIT_END, 0), 433 MPFROMP(info -> name)); 434 info = info -> next; 389 MPFROM2SHORT(LIT_END, 0), MPFROMP(info->name)); 390 info = info->next; 435 391 } 436 392 WinSendDlgItemMsg(hwnd, EA_LISTBOX, LM_SELECTITEM, … … 438 394 } 439 395 else 440 WinSetDlgItemText(hwnd, EA_TEXT, 441 GetPString(IDS_EANOEAS)); 396 WinSetDlgItemText(hwnd, EA_TEXT, GetPString(IDS_EANOEAS)); 442 397 return 0; 443 398 … … 448 403 case UM_PAINT: 449 404 PaintRecessedWindow(WinWindowFromID(hwnd, EA_HELP), (HPS) 0, FALSE, TRUE); 450 PaintRecessedWindow(WinWindowFromID(hwnd, EA_TEXT), (HPS) 0, FALSE, FALSE); 405 PaintRecessedWindow(WinWindowFromID(hwnd, EA_TEXT), (HPS) 0, FALSE, 406 FALSE); 451 407 return 0; 452 408 453 409 case WM_CONTROL: 454 switch (SHORT1FROMMP(mp1)) 455 { 410 switch (SHORT1FROMMP(mp1)) { 456 411 case EA_NAMES: 457 switch (SHORT2FROMMP(mp1)) 458 { 412 switch (SHORT2FROMMP(mp1)) { 459 413 case LN_SETFOCUS: 460 WinSetDlgItemText(hwnd, EA_HELP, 461 GetPString(IDS_EAFILENAMESHELPTEXT)); 414 WinSetDlgItemText(hwnd, EA_HELP, GetPString(IDS_EAFILENAMESHELPTEXT)); 462 415 break; 463 416 case LN_KILLFOCUS: … … 474 427 MPFROM2SHORT(LIT_FIRST, 0), 475 428 MPVOID); 476 if (sSelect >= 0) 477 { 429 if (sSelect >= 0) { 478 430 *s = 0; 479 431 WinSendDlgItemMsg(hwnd, EA_NAMES, LM_QUERYITEMTEXT, 480 MPFROM2SHORT(sSelect, CCHMAXPATH), 481 MPFROMP(s)); 482 if (*s) 483 { 484 strcpy(eap -> filename, s); 432 MPFROM2SHORT(sSelect, CCHMAXPATH), MPFROMP(s)); 433 if (*s) { 434 strcpy(eap->filename, s); 485 435 if (SHORT2FROMMP(mp1) == LN_SELECT) 486 436 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 487 437 else 488 QuickView(hwnd, eap ->filename);438 QuickView(hwnd, eap->filename); 489 439 } 490 440 } … … 495 445 496 446 case EA_LISTBOX: 497 switch (SHORT2FROMMP(mp1)) 498 { 447 switch (SHORT2FROMMP(mp1)) { 499 448 case LN_SETFOCUS: 500 WinSetDlgItemText(hwnd, EA_HELP, 501 GetPString(IDS_EATYPESHELPTEXT)); 449 WinSetDlgItemText(hwnd, EA_HELP, GetPString(IDS_EATYPESHELPTEXT)); 502 450 break; 503 451 case LN_KILLFOCUS: … … 509 457 SHORT sSelect; 510 458 511 eap -> current = NULL; 512 if (eap -> head) 513 { 459 eap->current = NULL; 460 if (eap->head) { 514 461 WinSetDlgItemText(hwnd, EA_TEXT, NullStr); 515 462 WinShowWindow(WinWindowFromID(hwnd, EA_ENTRY), FALSE); … … 520 467 WinShowWindow(WinWindowFromID(hwnd, EA_DELETE), FALSE); 521 468 WinShowWindow(WinWindowFromID(hwnd, EA_HEXDUMP), FALSE); 522 WinSendDlgItemMsg(hwnd, EA_HEXDUMP, LM_DELETEALL, 523 MPVOID, MPVOID); 469 WinSendDlgItemMsg(hwnd, EA_HEXDUMP, LM_DELETEALL, MPVOID, MPVOID); 524 470 *s = 0; 525 471 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, EA_LISTBOX, 526 LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), 472 LM_QUERYSELECTION, 473 MPFROMSHORT(LIT_FIRST), 527 474 MPVOID); 528 if (sSelect >= 0) 529 { 475 if (sSelect >= 0) { 530 476 WinSendDlgItemMsg(hwnd, EA_LISTBOX, LM_QUERYITEMTEXT, 531 MPFROM2SHORT(sSelect, 256), 532 MPFROMP(s)); 533 if (*s) 534 { 477 MPFROM2SHORT(sSelect, 256), MPFROMP(s)); 478 if (*s) { 535 479 536 480 USHORT len, num, type; … … 541 485 IPT pos = 0L; 542 486 543 info = eap -> head; 544 while (info) 545 { 546 if (!strcmp(s, info -> name)) 547 { 548 eap -> current = info; 487 info = eap->head; 488 while (info) { 489 if (!strcmp(s, info->name)) { 490 eap->current = info; 549 491 WinShowWindow(WinWindowFromID(hwnd, EA_DELETE), TRUE); 550 switch (*(USHORT *) info -> value) 551 { 492 switch (*(USHORT *) info->value) { 552 493 case EAT_EA: 553 494 case EAT_ASCII: 554 if (!strcmp(info ->name, SUBJECT))495 if (!strcmp(info->name, SUBJECT)) 555 496 WinSendDlgItemMsg(hwnd, EA_ENTRY, 556 497 EM_SETTEXTLIMIT, … … 561 502 MPFROM2SHORT(256, 0), MPVOID); 562 503 WinSetDlgItemText(hwnd, EA_ENTRY, 563 info -> value + 564 (sizeof(USHORT) * 2)); 565 WinShowWindow(WinWindowFromID(hwnd, EA_ENTRY), 566 TRUE); 504 info->value + (sizeof(USHORT) * 2)); 505 WinShowWindow(WinWindowFromID(hwnd, EA_ENTRY), TRUE); 567 506 WinEnableWindow(WinWindowFromID(hwnd, EA_CHANGE), 568 507 FALSE); 569 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), 570 TRUE); 508 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), TRUE); 571 509 { 572 510 CHAR str[81]; … … 574 512 sprintf(str, 575 513 GetPString(IDS_DATAANDBYTESTEXT), 576 (*(USHORT *) info ->value == EAT_ASCII) ?514 (*(USHORT *) info->value == EAT_ASCII) ? 577 515 GetPString(IDS_TEXTTEXT) : 578 GetPString(IDS_EAREFTEXT), 579 info -> cbValue); 580 WinSetDlgItemText(hwnd, 581 EA_TEXT, 582 str); 516 GetPString(IDS_EAREFTEXT), info->cbValue); 517 WinSetDlgItemText(hwnd, EA_TEXT, str); 583 518 } 584 519 break; 585 520 case EAT_MVST: 586 521 MLEclearall(WinWindowFromID(hwnd, EA_MLE)); 587 num = *(USHORT *) (info -> value + 588 (sizeof(USHORT) * 2)); 589 type = *(USHORT *) (info -> value + 590 (sizeof(USHORT) * 3)); 591 if (type == EAT_ASCII) 592 { 593 data = info -> value + (sizeof(USHORT) * 4); 522 num = *(USHORT *) (info->value + (sizeof(USHORT) * 2)); 523 type = *(USHORT *) (info->value + (sizeof(USHORT) * 3)); 524 if (type == EAT_ASCII) { 525 data = info->value + (sizeof(USHORT) * 4); 594 526 len = *(USHORT *) data; 595 527 data += sizeof(USHORT); 596 while ((data - info -> value) + len <= 597 info -> cbValue) 598 { 599 if (last != '\n') 600 { 528 while ((data - info->value) + len <= info->cbValue) { 529 if (last != '\n') { 601 530 WinSendDlgItemMsg(hwnd, 602 531 EA_MLE, … … 607 536 EA_MLE, 608 537 MLM_IMPORT, 609 MPFROMP(&pos), 610 MPFROMLONG(1L)); 538 MPFROMP(&pos), MPFROMLONG(1L)); 611 539 } 612 540 WinSendDlgItemMsg(hwnd, … … 622 550 data += len; 623 551 last = *(data - 1); 624 if (data - info -> value >= info ->cbValue)552 if (data - info->value >= info->cbValue) 625 553 break; 626 554 len = *(USHORT *) data; 627 555 data += sizeof(USHORT); 628 556 } 629 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), 630 TRUE); 557 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), TRUE); 631 558 WinEnableWindow(WinWindowFromID(hwnd, EA_CHANGE), 632 559 FALSE); 633 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), 634 TRUE); 560 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), TRUE); 635 561 } 636 else 637 { 638 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), 639 FALSE); 562 else { 563 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), FALSE); 640 564 HexDumpEA(hwnd, info); 641 565 WinShowWindow(WinWindowFromID(hwnd, EA_HEXDUMP), … … 650 574 (num == 1) ? 651 575 GetPString(IDS_YTEXT) : 652 GetPString(IDS_IESTEXT), 653 info -> cbValue); 654 WinSetDlgItemText(hwnd, 655 EA_TEXT, 656 str); 576 GetPString(IDS_IESTEXT), info->cbValue); 577 WinSetDlgItemText(hwnd, EA_TEXT, str); 657 578 } 658 579 break; 659 580 case EAT_MVMT: 660 581 MLEclearall(WinWindowFromID(hwnd, EA_MLE)); 661 num = *(USHORT *) (info -> value + 662 (sizeof(USHORT) * 2)); 663 data = info -> value + (sizeof(USHORT) * 3); 582 num = *(USHORT *) (info->value + (sizeof(USHORT) * 2)); 583 data = info->value + (sizeof(USHORT) * 3); 664 584 type = *(USHORT *) data; 665 585 data += sizeof(USHORT); … … 667 587 data += sizeof(USHORT); 668 588 alltext = TRUE; 669 while ((data - info -> value) - len <= 670 info -> cbValue) 671 { 672 if (type != EAT_ASCII) 673 { 589 while ((data - info->value) - len <= info->cbValue) { 590 if (type != EAT_ASCII) { 674 591 alltext = FALSE; 675 592 break; 676 593 } 677 594 data += len; 678 if (data - info -> value >= info ->cbValue)595 if (data - info->value >= info->cbValue) 679 596 break; 680 597 type = *(USHORT *) data; … … 683 600 data += sizeof(USHORT); 684 601 } 685 if (alltext) 686 { 687 data = info -> value + (sizeof(USHORT) * 3); 602 if (alltext) { 603 data = info->value + (sizeof(USHORT) * 3); 688 604 type = *(USHORT *) data; 689 605 data += sizeof(USHORT); 690 606 len = *(USHORT *) data; 691 607 data += sizeof(USHORT); 692 while ((data - info -> value) - len <= 693 info -> cbValue) 694 { 695 if (last != '\n') 696 { 608 while ((data - info->value) - len <= info->cbValue) { 609 if (last != '\n') { 697 610 WinSendDlgItemMsg(hwnd, 698 611 EA_MLE, … … 703 616 EA_MLE, 704 617 MLM_IMPORT, 705 MPFROMP(&pos), 706 MPFROMLONG(1L)); 618 MPFROMP(&pos), MPFROMLONG(1L)); 707 619 } 708 620 WinSendDlgItemMsg(hwnd, … … 718 630 data += len; 719 631 last = *(data - 1); 720 if (data - info -> value >= info ->cbValue)632 if (data - info->value >= info->cbValue) 721 633 break; 722 634 type = *(USHORT *) data; … … 726 638 } 727 639 } 728 if (alltext) 729 { 730 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), 731 TRUE); 640 if (alltext) { 641 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), TRUE); 732 642 WinEnableWindow(WinWindowFromID(hwnd, 733 643 EA_CHANGE), FALSE); 734 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), 735 TRUE); 644 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), TRUE); 736 645 } 737 else 738 { 739 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), 740 FALSE); 646 else { 647 WinShowWindow(WinWindowFromID(hwnd, EA_MLE), FALSE); 741 648 HexDumpEA(hwnd, info); 742 649 WinShowWindow(WinWindowFromID(hwnd, EA_HEXDUMP), … … 752 659 GetPString(IDS_YTEXT) : 753 660 GetPString(IDS_IESTEXT), 754 info ->cbValue,661 info->cbValue, 755 662 (alltext) ? 756 663 GetPString(IDS_ALLTEXTTEXT) : 757 664 GetPString(IDS_MIXEDTYPESTEXT)); 758 WinSetDlgItemText(hwnd, 759 EA_TEXT, 760 str); 665 WinSetDlgItemText(hwnd, EA_TEXT, str); 761 666 } 762 667 break; 763 668 default: 764 669 HexDumpEA(hwnd, info); 765 WinShowWindow(WinWindowFromID(hwnd, EA_HEXDUMP), 766 TRUE); 767 switch (*(USHORT *) info -> value) 768 { 670 WinShowWindow(WinWindowFromID(hwnd, EA_HEXDUMP), TRUE); 671 switch (*(USHORT *) info->value) { 769 672 case EAT_BINARY: 770 673 { … … 773 676 sprintf(str, 774 677 GetPString(IDS_BINARYBYTESTEXT), 775 info -> cbValue); 776 WinSetDlgItemText(hwnd, 777 EA_TEXT, 778 str); 678 info->cbValue); 679 WinSetDlgItemText(hwnd, EA_TEXT, str); 779 680 } 780 681 break; … … 785 686 sprintf(str, 786 687 GetPString(IDS_BITMAPBYTESTEXT), 787 info -> cbValue); 788 WinSetDlgItemText(hwnd, 789 EA_TEXT, 790 str); 688 info->cbValue); 689 WinSetDlgItemText(hwnd, EA_TEXT, str); 791 690 } 792 691 break; … … 797 696 sprintf(str, 798 697 GetPString(IDS_METAFILEBYTESTEXT), 799 info -> cbValue); 800 WinSetDlgItemText(hwnd, 801 EA_TEXT, 802 str); 698 info->cbValue); 699 WinSetDlgItemText(hwnd, EA_TEXT, str); 803 700 } 804 701 break; … … 809 706 sprintf(str, 810 707 GetPString(IDS_ICONBYTESTEXT), 811 info -> cbValue); 812 WinSetDlgItemText(hwnd, 813 EA_TEXT, 814 str); 708 info->cbValue); 709 WinSetDlgItemText(hwnd, EA_TEXT, str); 815 710 } 816 711 break; … … 821 716 sprintf(str, 822 717 GetPString(IDS_ASN1BYTESTEXT), 823 info -> cbValue); 824 WinSetDlgItemText(hwnd, 825 EA_TEXT, 826 str); 718 info->cbValue); 719 WinSetDlgItemText(hwnd, EA_TEXT, str); 827 720 } 828 721 break; … … 833 726 sprintf(str, 834 727 GetPString(IDS_UNKNOWNBYTESTEXT), 835 *(USHORT *) info -> value, 836 info -> cbValue); 837 WinSetDlgItemText(hwnd, 838 EA_TEXT, 839 str); 728 *(USHORT *) info->value, info->cbValue); 729 WinSetDlgItemText(hwnd, EA_TEXT, str); 840 730 } 841 731 break; … … 844 734 } 845 735 } 846 info = info ->next;736 info = info->next; 847 737 } 848 738 } 849 739 } 850 740 } 851 if (!isalpha(*eap ->filename) ||852 (driveflags[toupper(*eap -> filename) - 'A'] & DRIVE_NOTWRITEABLE))853 {741 if (!isalpha(*eap->filename) || 742 (driveflags[toupper(*eap->filename) - 'A'] & 743 DRIVE_NOTWRITEABLE)) { 854 744 WinEnableWindow(WinWindowFromID(hwnd, EA_CHANGE), FALSE); 855 745 WinEnableWindow(WinWindowFromID(hwnd, EA_ADD), FALSE); 856 746 WinEnableWindow(WinWindowFromID(hwnd, EA_DELETE), FALSE); 857 747 } 858 else 859 { 748 else { 860 749 WinEnableWindow(WinWindowFromID(hwnd, EA_CHANGE), TRUE); 861 750 WinEnableWindow(WinWindowFromID(hwnd, EA_ADD), TRUE); … … 868 757 869 758 case EA_ENTRY: 870 switch (SHORT2FROMMP(mp1)) 871 { 759 switch (SHORT2FROMMP(mp1)) { 872 760 case EN_SETFOCUS: 873 WinSetDlgItemText(hwnd, EA_HELP, 874 GetPString(IDS_EADATAHELPTEXT)); 761 WinSetDlgItemText(hwnd, EA_HELP, GetPString(IDS_EADATAHELPTEXT)); 875 762 break; 876 763 case EN_KILLFOCUS: … … 884 771 885 772 case EA_HEXDUMP: 886 switch (SHORT2FROMMP(mp1)) 887 { 773 switch (SHORT2FROMMP(mp1)) { 888 774 case LN_SETFOCUS: 889 WinSetDlgItemText(hwnd, EA_HELP, 890 GetPString(IDS_EADATAHELPTEXT)); 775 WinSetDlgItemText(hwnd, EA_HELP, GetPString(IDS_EADATAHELPTEXT)); 891 776 break; 892 777 case LN_KILLFOCUS: … … 897 782 898 783 case EA_MLE: 899 switch (SHORT2FROMMP(mp1)) 900 { 784 switch (SHORT2FROMMP(mp1)) { 901 785 case MLN_SETFOCUS: 902 WinSetDlgItemText(hwnd, EA_HELP, 903 GetPString(IDS_EADATAHELPTEXT)); 786 WinSetDlgItemText(hwnd, EA_HELP, GetPString(IDS_EADATAHELPTEXT)); 904 787 break; 905 788 case MLN_KILLFOCUS: … … 915 798 916 799 case WM_COMMAND: 917 switch (SHORT1FROMMP(mp1)) 918 { 800 switch (SHORT1FROMMP(mp1)) { 919 801 case EA_ADD: 920 802 { 921 803 ADDEA add; 922 804 923 add.filename = eap ->filename;924 add.head = eap ->head;805 add.filename = eap->filename; 806 add.head = eap->head; 925 807 if (WinDlgBox(HWND_DESKTOP, hwnd, AddEAProc, FM3ModHandle, 926 EAC_FRAME, &add)) 927 { 928 Free_FEAList(eap -> head); 929 eap -> head = GetFileEAs(eap -> filename, FALSE, FALSE); 808 EAC_FRAME, &add)) { 809 Free_FEAList(eap->head); 810 eap->head = GetFileEAs(eap->filename, FALSE, FALSE); 930 811 WinSendMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 931 812 } … … 933 814 break; 934 815 case EA_CHANGE: 935 if (!eap ->current)816 if (!eap->current) 936 817 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), FALSE); 937 else 938 { 818 else { 939 819 940 820 CHAR *s; 941 821 USHORT control; 942 822 943 if (!eap -> head || !*eap -> filename) 944 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 945 else 946 { 947 switch (*(USHORT *) eap -> current -> value) 948 { 823 if (!eap->head || !*eap->filename) 824 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 825 else { 826 switch (*(USHORT *) eap->current->value) { 949 827 case EAT_EA: 950 828 case EAT_ASCII: … … 958 836 break; 959 837 default: 960 838 Runtime_Error(pszSrcFile, __LINE__, "unexpected type"); 961 839 WinShowWindow(WinWindowFromID(hwnd, EA_CHANGE), FALSE); 962 840 control = 0; 963 841 } 964 if (control) 965 { 966 s = xmalloc(32768,pszSrcFile,__LINE__); 842 if (control) { 843 s = xmalloc(32768, pszSrcFile, __LINE__); 967 844 if (s) { 968 845 *s = 0; 969 846 WinQueryDlgItemText(hwnd, control, 32767L, (PCH) s); 970 847 if (!*s) 971 848 Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT); 972 849 else { 973 850 PFEA2LIST pfealist; 974 851 975 pfealist = SaveEA(eap -> filename, eap ->current, s, FALSE);852 pfealist = SaveEA(eap->filename, eap->current, s, FALSE); 976 853 if (!pfealist) 977 854 Runtime_Error(pszSrcFile, __LINE__, "SaveEA"); 978 855 else { 979 856 PFEA2 pfea; 980 857 981 pfea = xmalloc(pfealist -> cbList,pszSrcFile,__LINE__);858 pfea = xmalloc(pfealist->cbList, pszSrcFile, __LINE__); 982 859 if (pfea) { 983 memcpy(pfea, pfealist ->list,984 pfealist ->cbList - sizeof(ULONG));985 free(eap -> current ->pfea);986 eap -> current ->pfea = pfea;987 eap -> current -> name = eap -> current -> pfea ->szName;988 eap -> current -> cbName = eap -> current -> pfea ->cbName;989 eap -> current -> cbValue = eap -> current -> pfea ->cbValue;990 eap -> current -> value = eap -> current -> pfea ->szName +991 eap -> current -> pfea ->cbName + 1;992 eap -> current -> value[eap -> current ->cbValue] = 0;860 memcpy(pfea, pfealist->list, 861 pfealist->cbList - sizeof(ULONG)); 862 free(eap->current->pfea); 863 eap->current->pfea = pfea; 864 eap->current->name = eap->current->pfea->szName; 865 eap->current->cbName = eap->current->pfea->cbName; 866 eap->current->cbValue = eap->current->pfea->cbValue; 867 eap->current->value = eap->current->pfea->szName + 868 eap->current->pfea->cbName + 1; 869 eap->current->value[eap->current->cbValue] = 0; 993 870 PostMsg(hwnd, WM_CONTROL, 994 MPFROM2SHORT(EA_LISTBOX, LN_SELECT), 995 MPVOID); 871 MPFROM2SHORT(EA_LISTBOX, LN_SELECT), MPVOID); 996 872 } 997 873 DosFreeMem(pfealist); … … 1006 882 1007 883 case EA_DELETE: 1008 if (eap -> head && eap -> current) 1009 { 884 if (eap->head && eap->current) { 1010 885 1011 886 EAOP2 eaop; … … 1015 890 SHORT sSelect; 1016 891 1017 pfealist = xmallocz(sizeof(FEA2LIST) + eap -> current -> cbName + 1,pszSrcFile,__LINE__); 892 pfealist = 893 xmallocz(sizeof(FEA2LIST) + eap->current->cbName + 1, pszSrcFile, 894 __LINE__); 1018 895 if (pfealist) { 1019 pfealist -> cbList = sizeof(FEA2LIST) + eap -> current ->cbName + 1;1020 pfealist -> list[0].cbName = eap -> current ->cbName;1021 strcpy(pfealist -> list[0].szName, eap -> current ->name);1022 pfealist ->list[0].cbValue = 0;896 pfealist->cbList = sizeof(FEA2LIST) + eap->current->cbName + 1; 897 pfealist->list[0].cbName = eap->current->cbName; 898 strcpy(pfealist->list[0].szName, eap->current->name); 899 pfealist->list[0].cbValue = 0; 1023 900 memset(&gealist, 0, sizeof(GEA2LIST)); 1024 901 gealist.cbList = sizeof(GEA2LIST); … … 1026 903 eaop.fpFEA2List = pfealist; 1027 904 eaop.oError = 0L; 1028 rc = DosSetPathInfo(eap ->filename, FIL_QUERYEASIZE, (PVOID) & eaop,905 rc = DosSetPathInfo(eap->filename, FIL_QUERYEASIZE, (PVOID) & eaop, 1029 906 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU); 1030 907 free(pfealist); 1031 908 if (rc) 1032 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosSetPathInfo"); 909 Dos_Error(MB_CANCEL, rc, hwnd, pszSrcFile, __LINE__, 910 "DosSetPathInfo"); 1033 911 else { 1034 912 sSelect = 0; 1035 if (eap -> current == eap ->head) {1036 eap -> head = eap -> head ->next;1037 free(eap -> current ->pfea);1038 free(eap ->current);1039 eap ->current = NULL;913 if (eap->current == eap->head) { 914 eap->head = eap->head->next; 915 free(eap->current->pfea); 916 free(eap->current); 917 eap->current = NULL; 1040 918 } 1041 919 else { 1042 info = eap ->head;920 info = eap->head; 1043 921 while (info) { 1044 if (info -> next == eap ->current) {922 if (info->next == eap->current) { 1045 923 sSelect++; 1046 info -> next = eap -> current ->next;1047 free(eap -> current ->pfea);1048 free(eap ->current);1049 eap ->current = NULL;924 info->next = eap->current->next; 925 free(eap->current->pfea); 926 free(eap->current); 927 eap->current = NULL; 1050 928 break; 1051 929 } 1052 930 sSelect++; 1053 info = info ->next;931 info = info->next; 1054 932 } 1055 933 } … … 1063 941 WinSetDlgItemText(hwnd, EA_ENTRY, NullStr); 1064 942 MLEclearall(WinWindowFromID(hwnd, EA_MLE)); 1065 WinSendDlgItemMsg(hwnd, EA_HEXDUMP, LM_DELETEALL, 1066 MPVOID, MPVOID); 943 WinSendDlgItemMsg(hwnd, EA_HEXDUMP, LM_DELETEALL, MPVOID, MPVOID); 1067 944 if (sSelect && (SHORT) WinSendDlgItemMsg(hwnd, EA_LISTBOX, 1068 945 LM_QUERYITEMCOUNT, … … 1076 953 } 1077 954 } 1078 if (!eap ->head)955 if (!eap->head) 1079 956 WinSetDlgItemText(hwnd, EA_TEXT, GetPString(IDS_EANOEAS)); 1080 957 break; … … 1083 960 if (hwndHelp) 1084 961 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 1085 MPFROM2SHORT(HELP_EAS, 0), 1086 MPFROMSHORT(HM_RESOURCEID)); 962 MPFROM2SHORT(HELP_EAS, 0), MPFROMSHORT(HM_RESOURCEID)); 1087 963 break; 1088 964 … … 1101 977 1102 978 case WM_DESTROY: 1103 if (eap) 1104 { 1105 if (eap -> head) 1106 Free_FEAList(eap -> head); 979 if (eap) { 980 if (eap->head) 981 Free_FEAList(eap->head); 1107 982 free(eap); 1108 983 if (hptrIcon) … … 1111 986 } 1112 987 break; 1113 } 988 } // switch 1114 989 return WinDefDlgProc(hwnd, msg, mp1, mp2); 1115 990 } … … 1130 1005 return (PVOID) pfealist; 1131 1006 len = strlen(newdata); 1132 ealen = sizeof(FEA2LIST) + 24L + (ULONG) current ->cbName + 1L +1007 ealen = sizeof(FEA2LIST) + 24L + (ULONG) current->cbName + 1L + 1133 1008 (ULONG) len + 4L; 1134 switch (*(USHORT *) current -> value) 1135 { 1009 switch (*(USHORT *) current->value) { 1136 1010 case EAT_EA: 1137 1011 case EAT_ASCII: … … 1142 1016 while (*p == '\n') 1143 1017 p++; 1144 while (*p) 1145 { 1018 while (*p) { 1146 1019 if (*p == '\n' && *(p + 1)) 1147 1020 ealen += sizeof(USHORT); … … 1154 1027 while (*p == '\n') 1155 1028 p++; 1156 while (*p) 1157 { 1029 while (*p) { 1158 1030 if (*p == '\n' && *(p + 1)) 1159 1031 ealen += (sizeof(USHORT) * 2); … … 1168 1040 OBJ_TILE | PAG_COMMIT | PAG_READ | PAG_WRITE); 1169 1041 if (rc) 1170 Dos_Error(MB_CANCEL, rc,HWND_DESKTOP,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY));1171 else 1172 {1042 Dos_Error(MB_CANCEL, rc, HWND_DESKTOP, pszSrcFile, __LINE__, 1043 GetPString(IDS_OUTOFMEMORY)); 1044 else { 1173 1045 memset(pfealist, 0, ealen); 1174 pfealist ->list[0].oNextEntryOffset = 0L;1175 pfealist -> list[0].fEA = 0;//current->fEA;1176 1177 pfealist -> list[0].cbName = current ->cbName;1178 memcpy(pfealist -> list[0].szName, current -> name, pfealist -> list[0].cbName + 1);1179 eaval = pfealist -> list[0].szName + pfealist -> list[0].cbName + 1;1180 switch (*(USHORT *) current -> value)1181 {1046 pfealist->list[0].oNextEntryOffset = 0L; 1047 pfealist->list[0].fEA = 0; //current->fEA; 1048 1049 pfealist->list[0].cbName = current->cbName; 1050 memcpy(pfealist->list[0].szName, current->name, 1051 pfealist->list[0].cbName + 1); 1052 eaval = pfealist->list[0].szName + pfealist->list[0].cbName + 1; 1053 switch (*(USHORT *) current->value) { 1182 1054 case EAT_EA: 1183 1055 case EAT_ASCII: 1184 *(USHORT *) eaval = *(USHORT *) current ->value;1056 *(USHORT *) eaval = *(USHORT *) current->value; 1185 1057 eaval += sizeof(USHORT); 1186 1058 *(USHORT *) eaval = (USHORT) len; … … 1192 1064 *(USHORT *) eaval = (USHORT) EAT_MVST; 1193 1065 eaval += sizeof(USHORT); 1194 *(USHORT *) eaval = *(USHORT *) (current ->value + sizeof(USHORT));1066 *(USHORT *) eaval = *(USHORT *) (current->value + sizeof(USHORT)); 1195 1067 eaval += sizeof(USHORT); 1196 1068 num = (USHORT *) eaval; … … 1205 1077 while (*p == '\n') 1206 1078 p++; 1207 while (*p) 1208 { 1209 while (*p) 1210 { 1079 while (*p) { 1080 while (*p) { 1211 1081 if (*p == '\n') 1212 1082 p++; … … 1216 1086 if (*p || *plen) 1217 1087 (*num)++; 1218 if (*p) 1219 { 1088 if (*p) { 1220 1089 plen = (USHORT *) eaval; 1221 1090 *plen = 0; … … 1239 1108 *(USHORT *) eaval = (USHORT) EAT_MVMT; 1240 1109 eaval += sizeof(USHORT); 1241 *(USHORT *) eaval = *(USHORT *) (current ->value + sizeof(USHORT));1110 *(USHORT *) eaval = *(USHORT *) (current->value + sizeof(USHORT)); 1242 1111 eaval += sizeof(USHORT); 1243 1112 num = (USHORT *) eaval; … … 1252 1121 while (*p == '\n') 1253 1122 p++; 1254 while (*p) 1255 { 1256 while (*p) 1257 { 1123 while (*p) { 1124 while (*p) { 1258 1125 if (*p == '\n') 1259 1126 p++; … … 1263 1130 if (*p || *plen) 1264 1131 (*num)++; 1265 if (*p) 1266 { 1132 if (*p) { 1267 1133 *(USHORT *) eaval = (USHORT) EAT_ASCII; 1268 1134 eaval += sizeof(USHORT); … … 1274 1140 break; 1275 1141 } 1276 pfealist ->list[0].cbValue = (ULONG) (eaval -1277 (pfealist ->list[0].szName +1278 pfealist ->list[0].cbName + 1));1142 pfealist->list[0].cbValue = (ULONG) (eaval - 1143 (pfealist->list[0].szName + 1144 pfealist->list[0].cbName + 1)); 1279 1145 eaop.fpGEA2List = (PGEA2LIST) 0; 1280 1146 eaop.fpFEA2List = pfealist; 1281 1147 eaop.oError = 0L; 1282 pfealist -> cbList = 13L + (ULONG) pfealist ->list[0].cbName +1283 (ULONG) pfealist ->list[0].cbValue;1148 pfealist->cbList = 13L + (ULONG) pfealist->list[0].cbName + 1149 (ULONG) pfealist->list[0].cbValue; 1284 1150 1285 1151 rc = DosSetPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & eaop, 1286 1152 (ULONG) sizeof(EAOP2), DSPI_WRTTHRU); 1287 if (rc) 1288 { 1153 if (rc) { 1289 1154 DosFreeMem(pfealist); 1290 1155 pfealist = NULL; 1291 1156 } 1292 if (rc && !silentfail) 1293 { 1157 if (rc && !silentfail) { 1294 1158 if (rc == ERROR_ACCESS_DENIED || rc == ERROR_SHARING_VIOLATION) { 1295 1159 saymsg(MB_ENTER, 1296 1160 HWND_DESKTOP, 1297 1161 GetPString(IDS_OOPSTEXT), 1298 GetPString(IDS_CANTWRITEEATEXT), 1299 current -> name, 1300 filename); 1162 GetPString(IDS_CANTWRITEEATEXT), current->name, filename); 1301 1163 } 1302 1164 else { … … 1307 1169 __LINE__, 1308 1170 GetPString(IDS_ERRORWRITEEATEXT), 1309 current -> name, 1310 filename, 1311 eaop.oError); 1171 current->name, filename, eaop.oError); 1312 1172 } 1313 1173 } … … 1333 1193 OPEN_FLAGS_NOINHERIT | 1334 1194 OPEN_SHARE_DENYREADWRITE | 1335 OPEN_ACCESS_READWRITE, (PEAOP2) 0)) 1336 { 1195 OPEN_ACCESS_READWRITE, (PEAOP2) 0)) { 1337 1196 if (ishandle) 1338 1197 handle = *(HFILE *) filename; 1339 1198 if (!DosQueryFileInfo(handle, FIL_QUERYEASIZE, (PVOID) & fsa4, 1340 (ULONG) sizeof(fsa4)) && fsa4.cbList > 4L) 1341 { 1199 (ULONG) sizeof(fsa4)) && fsa4.cbList > 4L) { 1342 1200 1343 1201 PDENA2 pdena; … … 1348 1206 ULONG x = 1L, ecnt = 1L; 1349 1207 1350 pdena = xmalloc(65536 + 1024,pszSrcFile,__LINE__); 1351 if (pdena) 1352 { 1353 while (!DosEnumAttribute(ENUMEA_REFTYPE_FHANDLE, &handle, x, (PVOID) pdena, 1354 (ULONG) 65536L, &ecnt, ENUMEA_LEVEL_NO_VALUE) && 1355 ecnt) 1356 { 1357 pgealist = xmalloc(64 + pdena -> cbName,pszSrcFile,__LINE__); 1358 if (pgealist) 1359 { 1360 pgealist -> cbList = 64 + pdena -> cbName; 1361 pgea = pgealist -> list; 1362 pgea -> oNextEntryOffset = 0L; 1363 pgea -> cbName = pdena -> cbName; 1364 memcpy(pgea -> szName, pdena -> szName, pdena -> cbName + 1); 1365 pfealist = xmallocz(64 + pdena -> cbName + pdena -> cbValue,pszSrcFile,__LINE__); 1208 pdena = xmalloc(65536 + 1024, pszSrcFile, __LINE__); 1209 if (pdena) { 1210 while (!DosEnumAttribute 1211 (ENUMEA_REFTYPE_FHANDLE, &handle, x, (PVOID) pdena, 1212 (ULONG) 65536L, &ecnt, ENUMEA_LEVEL_NO_VALUE) && ecnt) { 1213 pgealist = xmalloc(64 + pdena->cbName, pszSrcFile, __LINE__); 1214 if (pgealist) { 1215 pgealist->cbList = 64 + pdena->cbName; 1216 pgea = pgealist->list; 1217 pgea->oNextEntryOffset = 0L; 1218 pgea->cbName = pdena->cbName; 1219 memcpy(pgea->szName, pdena->szName, pdena->cbName + 1); 1220 pfealist = 1221 xmallocz(64 + pdena->cbName + pdena->cbValue, pszSrcFile, 1222 __LINE__); 1366 1223 if (pfealist) { 1367 pfealist -> cbList = 64 + pdena -> cbName + pdena ->cbValue;1224 pfealist->cbList = 64 + pdena->cbName + pdena->cbValue; 1368 1225 eaop.fpGEA2List = pgealist; 1369 1226 eaop.fpFEA2List = pfealist; 1370 1227 eaop.oError = 0L; 1371 // saymsg(MB_ENTER,HWND_DESKTOP,"Debug1","\"%s\" %ld",pdena->szName,x); 1372 rc = DosQueryFileInfo(handle, FIL_QUERYEASFROMLIST, (PVOID) & eaop, 1373 (ULONG) sizeof(EAOP2)); 1228 // saymsg(MB_ENTER,HWND_DESKTOP,"Debug1","\"%s\" %ld",pdena->szName,x); 1229 rc = 1230 DosQueryFileInfo(handle, FIL_QUERYEASFROMLIST, (PVOID) & eaop, 1231 (ULONG) sizeof(EAOP2)); 1374 1232 if (rc) { 1375 1233 if (!silentfail) { … … 1379 1237 pszSrcFile, 1380 1238 __LINE__, 1381 GetPString(IDS_ERRORREADEATEXT), 1382 pdena -> szName); 1239 GetPString(IDS_ERRORREADEATEXT), pdena->szName); 1383 1240 } 1384 1241 } 1385 1242 else { 1386 info = xmalloc(sizeof(HOLDFEA),pszSrcFile,__LINE__); 1387 if (info) 1388 { 1389 info -> pfea = xmalloc(eaop.fpFEA2List -> cbList - sizeof(ULONG),pszSrcFile,__LINE__); 1390 memcpy(info -> pfea, eaop.fpFEA2List -> list, 1391 eaop.fpFEA2List -> cbList - sizeof(ULONG)); 1392 info -> name = info -> pfea -> szName; 1393 info -> cbName = info -> pfea -> cbName; 1394 info -> cbValue = info -> pfea -> cbValue; 1395 info -> value = info -> pfea -> szName + info -> pfea -> cbName + 1; 1396 info -> value[info -> cbValue] = 0; 1397 info -> next = NULL; 1243 info = xmalloc(sizeof(HOLDFEA), pszSrcFile, __LINE__); 1244 if (info) { 1245 info->pfea = 1246 xmalloc(eaop.fpFEA2List->cbList - sizeof(ULONG), 1247 pszSrcFile, __LINE__); 1248 memcpy(info->pfea, eaop.fpFEA2List->list, 1249 eaop.fpFEA2List->cbList - sizeof(ULONG)); 1250 info->name = info->pfea->szName; 1251 info->cbName = info->pfea->cbName; 1252 info->cbValue = info->pfea->cbValue; 1253 info->value = info->pfea->szName + info->pfea->cbName + 1; 1254 info->value[info->cbValue] = 0; 1255 info->next = NULL; 1398 1256 if (!head) 1399 1257 head = info; 1400 1258 else 1401 last ->next = info;1259 last->next = info; 1402 1260 last = info; 1403 1261 } … … 1416 1274 DosClose(handle); 1417 1275 } 1418 else 1419 { 1276 else { 1420 1277 /* try it without opening it */ 1421 1278 if (!DosQueryPathInfo(filename, FIL_QUERYEASIZE, (PVOID) & fsa4, 1422 (ULONG) sizeof(fsa4)) && fsa4.cbList > 4L) 1423 { 1279 (ULONG) sizeof(fsa4)) && fsa4.cbList > 4L) { 1424 1280 1425 1281 PDENA2 pdena; … … 1430 1286 ULONG x = 1L, ecnt = 1L; 1431 1287 1432 pdena = xmalloc(65536 + 1024,pszSrcFile,__LINE__); 1433 if (pdena) 1434 { 1435 while (!DosEnumAttribute(ENUMEA_REFTYPE_PATH, filename, x, (PVOID) pdena, 1436 (ULONG) 65536L, &ecnt, ENUMEA_LEVEL_NO_VALUE) && 1437 ecnt) 1438 { 1439 pgealist = xmalloc(64 + pdena -> cbName,pszSrcFile,__LINE__); 1440 if (pgealist) 1441 { 1442 pgealist -> cbList = 64 + pdena -> cbName; 1443 pgea = pgealist -> list; 1444 pgea -> oNextEntryOffset = 0L; 1445 pgea -> cbName = pdena -> cbName; 1446 memcpy(pgea -> szName, pdena -> szName, pdena -> cbName + 1); 1447 pfealist = xmallocz(64 + pdena -> cbName + pdena -> cbValue,pszSrcFile,__LINE__); 1288 pdena = xmalloc(65536 + 1024, pszSrcFile, __LINE__); 1289 if (pdena) { 1290 while (!DosEnumAttribute 1291 (ENUMEA_REFTYPE_PATH, filename, x, (PVOID) pdena, 1292 (ULONG) 65536L, &ecnt, ENUMEA_LEVEL_NO_VALUE) && ecnt) { 1293 pgealist = xmalloc(64 + pdena->cbName, pszSrcFile, __LINE__); 1294 if (pgealist) { 1295 pgealist->cbList = 64 + pdena->cbName; 1296 pgea = pgealist->list; 1297 pgea->oNextEntryOffset = 0L; 1298 pgea->cbName = pdena->cbName; 1299 memcpy(pgea->szName, pdena->szName, pdena->cbName + 1); 1300 pfealist = 1301 xmallocz(64 + pdena->cbName + pdena->cbValue, pszSrcFile, 1302 __LINE__); 1448 1303 if (pfealist) { 1449 pfealist -> cbList = 64 + pdena -> cbName + pdena ->cbValue;1304 pfealist->cbList = 64 + pdena->cbName + pdena->cbValue; 1450 1305 eaop.fpGEA2List = pgealist; 1451 1306 eaop.fpFEA2List = pfealist; … … 1453 1308 // saymsg(MB_ENTER,HWND_DESKTOP,"Debug2","\"%s\" %ld",pdena->szName,x); 1454 1309 rc = DosQueryPathInfo(filename, FIL_QUERYEASFROMLIST, 1455 (PVOID) & eaop, 1456 (ULONG) sizeof(EAOP2)); 1457 if (!rc) 1458 { 1459 info = xmalloc(sizeof(HOLDFEA),pszSrcFile,__LINE__); 1460 if (info) 1461 { 1462 info -> pfea = xmalloc(eaop.fpFEA2List -> cbList - sizeof(ULONG),pszSrcFile,__LINE__); 1463 memcpy(info -> pfea, eaop.fpFEA2List -> list, 1464 eaop.fpFEA2List -> cbList - sizeof(ULONG)); 1465 info -> name = info -> pfea -> szName; 1466 info -> cbName = info -> pfea -> cbName; 1467 info -> cbValue = info -> pfea -> cbValue; 1468 info -> value = info -> pfea -> szName + info -> pfea -> cbName + 1; 1469 info -> value[info -> cbValue] = 0; 1470 info -> next = NULL; 1310 (PVOID) & eaop, (ULONG) sizeof(EAOP2)); 1311 if (!rc) { 1312 info = xmalloc(sizeof(HOLDFEA), pszSrcFile, __LINE__); 1313 if (info) { 1314 info->pfea = 1315 xmalloc(eaop.fpFEA2List->cbList - sizeof(ULONG), 1316 pszSrcFile, __LINE__); 1317 memcpy(info->pfea, eaop.fpFEA2List->list, 1318 eaop.fpFEA2List->cbList - sizeof(ULONG)); 1319 info->name = info->pfea->szName; 1320 info->cbName = info->pfea->cbName; 1321 info->cbValue = info->pfea->cbValue; 1322 info->value = info->pfea->szName + info->pfea->cbName + 1; 1323 info->value[info->cbValue] = 0; 1324 info->next = NULL; 1471 1325 if (!head) 1472 1326 head = info; 1473 1327 else 1474 last ->next = info;1328 last->next = info; 1475 1329 last = info; 1476 1330 } … … 1478 1332 free(pfealist); 1479 1333 } 1480 else 1481 { 1334 else { 1482 1335 free(pfealist); 1483 if (!silentfail) 1484 { 1485 if (rc == ERROR_ACCESS_DENIED || rc == ERROR_SHARING_VIOLATION) 1486 { 1487 rc = saymsg(MB_ENTER | MB_CANCEL, 1488 HWND_DESKTOP, 1489 GetPString(IDS_OOPSTEXT), 1490 GetPString(IDS_CANTREADEATEXT), 1491 filename, 1492 pdena -> szName); 1493 if (rc == MBID_CANCEL) 1494 { 1336 if (!silentfail) { 1337 if (rc == ERROR_ACCESS_DENIED 1338 || rc == ERROR_SHARING_VIOLATION) { 1339 rc = 1340 saymsg(MB_ENTER | MB_CANCEL, HWND_DESKTOP, 1341 GetPString(IDS_OOPSTEXT), 1342 GetPString(IDS_CANTREADEATEXT), filename, 1343 pdena->szName); 1344 if (rc == MBID_CANCEL) { 1495 1345 free(pgealist); 1496 1346 break; … … 1503 1353 pszSrcFile, 1504 1354 __LINE__, 1505 GetPString(IDS_ERRORREADEATEXT), 1506 pdena -> szName); 1355 GetPString(IDS_ERRORREADEATEXT), pdena->szName); 1507 1356 } 1508 1357 } … … 1527 1376 register HOLDFEA *next; 1528 1377 1529 while (pFEA) 1530 { 1378 while (pFEA) { 1531 1379 /* Free linked list */ 1532 next = pFEA ->next;1533 free(pFEA ->pfea);1380 next = pFEA->next; 1381 free(pFEA->pfea); 1534 1382 free(pFEA); 1535 1383 pFEA = next;
Note:
See TracChangeset
for help on using the changeset viewer.