Changeset 300 for trunk/dll/arccnrs.c


Ignore:
Timestamp:
Jun 27, 2006, 2:19:12 AM (19 years ago)
Author:
root
Message:

FillArcCnr: allow list start and end markers to be empty (i.e. tar)
ArcCnrWndProc: suppress IDM_EXTRACT if no simple extract (i.e. tar)
ArcCnrWndProc: correct date/time column display setup
Comments

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/arccnrs.c

    r249 r300  
    77
    88  Copyright (c) 1993-98 M. Kimes
    9   Copyright (c) 2001, 2005 Steven H. Levine
     9  Copyright (c) 2001, 2006 Steven H. Levine
    1010
    1111  11 Jun 02 SHL Ensure archive name not garbage
     
    2020  22 Jun 05 SHL ArcSort: correct typo in last sort fix
    2121  13 Aug 05 SHL FillArcCnr: optimize
     22  08 Dec 05 SHL FillArcCnr: allow list start and end markers to be empty (i.e. tar)
     23  08 Dec 05 SHL ArcCnrWndProc: suppress IDM_EXTRACT if no simple extract (i.e. tar)
     24  30 Dec 05 SHL ArcCnrWndProc: correct date/time column display setup
     25  29 May 06 SHL Comments
    2226
    2327***********************************************************************/
     
    287291
    288292static INT FillArcCnr (HWND hwndCnr,CHAR *arcname,ARC_TYPE **arcinfo,
    289                 ULONGLONG *pullTotalBytes)
     293                       ULONGLONG *pullTotalBytes)
    290294{
    291 
    292295  FILE         *fp;
    293296  HFILE         oldstdout;
     
    295298  CHAR          s[CCHMAXPATH * 2],lonename[CCHMAXPATH + 2],
    296299               *nsize,*osize,*fdate,*fname,*p,*pp,arctemp[33];
    297   BOOL          gotstart = FALSE,gotend = FALSE,wasquote,nomove = FALSE;
     300  BOOL          gotstart;
     301  BOOL          gotend;
     302  BOOL          wasquote;
     303  BOOL          nomove = FALSE;         // fixme to be gone?
    298304  INT           highest = 0,x,counter = 0,numarcfiles = 0;
    299305  PARCITEM      lastpai;
     
    304310  if(!arcname || !arcinfo)
    305311    return 0;
     312
    306313  info = *arcinfo;
    307314  if(!info)
     
    314321        break;
    315322    }
     323
    316324ReTry:
    317325
     
    348356    if(info->fnpos == -1)
    349357      highest = 32767;
     358
    350359    DosError(FERR_DISABLEHARDERR);
    351360    DosForceDelete(arctemp);
    352361    DosError(FERR_DISABLEHARDERR);
     362
    353363    strcpy(s,info->list);
    354364    p = strchr(s,' ');
     
    408418      }
    409419    }
     420
    410421    DosError(FERR_DISABLEHARDERR);
    411422    fp = _fsopen(arctemp,"r",SH_DENYWR);
     423
    412424    if(fp) {
     425      gotstart = !info->startlist || !*info->startlist; // If list has no start marker
     426
    413427      while(!feof(fp) && !gotend) {
    414428        if(!fgets(s,CCHMAXPATH * 2,fp))
     
    417431        stripcr(s);
    418432        if(!gotstart) {
    419           if(!strcmp(s,info->startlist))
    420           gotstart = TRUE;
     433          if (!strcmp(s,info->startlist))
     434            gotstart = TRUE;
    421435        }
    422436        else if(info->endlist &&
    423437                !strcmp(s,info->endlist))
    424438          gotend = TRUE;
    425         else {    /* add to container */
     439        else {
     440          /* add to container */
    426441          fname = NULL;
    427442          bstrip(s);
     
    596611          }
    597612        }
    598       }
     613      } // while !eof
     614
    599615      fclose(fp);
    600       if (!numarcfiles || !gotstart || (!gotend && info->endlist))
     616
     617      if (!numarcfiles || !gotstart || (!gotend && info->endlist && *info->endlist))
    601618      {
    602619        ARCDUMP ad;
     
    646663        info->prev = NULL;
    647664        arcsighead = info;
    648         rewrite_archiverbb2(NULL);
    649       }
    650     }
     665        rewrite_archiverbb2(NULL);      // Rewrite with warning
     666      }
     667    } // if opened
    651668    DosError(FERR_DISABLEHARDERR);
    652669    DosForceDelete(arctemp);
     
    10351052
    10361053    case UM_VIEWSMENU:
     1054      // fixme to disble menu items as needed
    10371055      return MRFROMLONG(CheckMenu(&ArcCnrMenu,ARCCNR_POPUP));
    10381056
    10391057    case UM_FILESMENU:
     1058      // fixme to disble menu items as needed
    10401059      return MRFROMLONG(CheckMenu(&ArcMenu,ARC_POPUP));
    10411060
     
    18681887                    for(x = 0;li->list[x];x++) {
    18691888                      if(IsFile(li->list[x]) == 1) {
    1870                         info = NULL;
    1871                         if(WinDlgBox(HWND_DESKTOP,HWND_DESKTOP,
    1872                                      SBoxDlgProc,FM3ModHandle,ASEL_FRAME,
    1873                                      (PVOID)&info) && info)
     1889                        info = NULL;    // Do not hide dups - fixme to know why?
     1890                        if (WinDlgBox(HWND_DESKTOP,HWND_DESKTOP,
     1891                                      SBoxDlgProc,FM3ModHandle,ASEL_FRAME,
     1892                                      (PVOID)&info) &&
     1893                            info)
     1894                        {
    18741895                          StartArcCnr(HWND_DESKTOP,
    18751896                                      HWND_DESKTOP,
     
    18771898                                      4,
    18781899                                      info);
     1900                        }
    18791901                      }
    18801902                    }
     
    21692191      if(dcd &&
    21702192         dcd->info) {
    2171         if(dcd->info->fdpos == -1 ||
    2172            !dcd->info->datetype)
     2193        if(dcd->info->fdpos == -1 || !dcd->info->datetype)
    21732194          dcd->sortFlags &= (~SORT_LWDATE);
    21742195        if(dcd->info->nsizepos == -1)
     
    21782199        AdjustCnrColVis(hwnd,
    21792200                        GetPString(IDS_OLDSIZECOLTEXT),
    2180                         (dcd->info->osizepos != -1),
     2201                        dcd->info->osizepos != -1,
    21812202                        FALSE);
    21822203        AdjustCnrColVis(hwnd,
    21832204                        GetPString(IDS_NEWSIZECOLTEXT),
    2184                         (dcd->info->nsizepos != -1),
     2205                        dcd->info->nsizepos != -1,
    21852206                        FALSE);
     2207        // Display unsullied date/time string if type 0
    21862208        AdjustCnrColVis(hwnd,
    21872209                        GetPString(IDS_DATETIMECOLTEXT),
    2188                         (dcd->info->fdpos != -1 && !dcd->info->datetype),
     2210                        dcd->info->fdpos != -1 && !dcd->info->datetype,
    21892211                        FALSE);
     2212        // Display parsed date/time columns if type specified
    21902213        AdjustCnrColVis(hwnd,
    21912214                        GetPString(IDS_TIMECOLTEXT),
    2192                         (dcd->info->fdpos != -1 || dcd->info->datetype),
     2215                        dcd->info->fdpos != -1 && dcd->info->datetype,
    21932216                        FALSE);
    21942217        AdjustCnrColVis(hwnd,
    21952218                        GetPString(IDS_DATECOLTEXT),
    2196                         (dcd->info->fdpos != -1 || dcd->info->datetype),
     2219                        dcd->info->fdpos != -1 && dcd->info->datetype,
    21972220                        FALSE);
    21982221        WinSendMsg(hwnd,
     
    25922615              WinEnableMenuItem((HWND)mp2,
    25932616                                IDM_DELETE,
    2594                                 (dcd->info->delete != NULL));
     2617                                dcd->info->delete != NULL);
    25952618              WinEnableMenuItem((HWND)mp2,
    25962619                                IDM_TEST,
    2597                                 (dcd->info->test != NULL));
     2620                                dcd->info->test != NULL);
     2621              WinEnableMenuItem((HWND)mp2,
     2622                                IDM_EXTRACT,
     2623                                dcd->info->extract != NULL);
    25982624              WinEnableMenuItem((HWND)mp2,
    25992625                                IDM_EXTRACTWDIRS,
    2600                                 (dcd->info->exwdirs != NULL));
     2626                                dcd->info->exwdirs != NULL);
    26012627              WinEnableMenuItem((HWND)mp2,
    26022628                                IDM_ARCEXTRACTWDIRS,
    2603                                 (dcd->info->exwdirs != NULL));
     2629                                dcd->info->exwdirs != NULL);
    26042630              WinEnableMenuItem((HWND)mp2,
    26052631                                IDM_ARCEXTRACTWDIRSEXIT,
    2606                                 (dcd->info->exwdirs != NULL));
     2632                                dcd->info->exwdirs != NULL);
    26072633            }
    26082634            break;
Note: See TracChangeset for help on using the changeset viewer.