/* mcPj008A.c */ /* After the success of File Reading and Folder Structure Handling, */ /* Now, get into the Real World Business, porting PC "4Eraser" to Macintosh. */ /* (2004-11-30) For better handling of Macintosh foldernames, filenames, * I modified 'firstwd.c'(First Word), to 'spacedwd.c'(Spaced Words). * Right now, most of space including foldernames are properly handled. * (2005-01-11, added note) * This is true for TextEdit(OSX)-> SimpleText(OS8) mcPj007C.c, but not * fully tested in "MacDualWay". */ /* (2004-12-17) In this occasion of porting, I also want to simplify the * Columns chopping into 7 parts to 3 parts. Beginning-Erasing-Ending. * Many chopping doesn't make sense, although it did have a testing purpose. */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* #define MgPathSDW 28 */ /* #define MgPathZIP 15 */ /* When define, I shouldn't declare variable 'int MgPathSDW' */ /* While it is open to user's input, I couldn't declare 'define' */ /* Also, as I saw in "PROGRAMMING.01"(in SDW) and "Programming.01" */ /* (in ZIP) are recognized differently, better cut off this disk */ /* label by including into the MagicPath number. */ char path [128], line [256]; /* Following three lines, 6 variables plus jumpThere are for Different Path Eraser */ char workingFD [128], shadowFD [128], zipLabel [128]; char workingFDP [128], shadowFDP [128], zipLabelP [128]; char jumpThere [128]; /* Following three lines are for SIZE Stamp Eraser */ char wordColumnBegin [128]; char wordColumnErase [128]; char wordColumnFinish [128]; char FNToOpen [64]; /* = filenamesToOpen */ char openedFN [64]; /* = opendFilename */ char openedFNWithPath [64]; char writingFile [64]; extern char *firstwd (char *to, char *from); /* to capture path */ //extern char *primedFirstwd (char *to, char *from); /* to capture primed path */ extern char *spacedwd (char *to, char *from); /* = spaced words, to capture blank-containing foldername */ extern char *shiftedLine (char *to, char *from); /* To jump and erase the frontal Path difference */ extern char *WDsBegin (char *to, char *from); extern char *WDsErase (char *to, char *from); extern char *WDsFinish (char *to, char *from); main() { int WrkFDLen, SdwFDLen, zipLBLen; int MgPathSDW, MgPathZIP; FILE *infpPATH, *infpSDW, *infpZIP; infpPATH=fopen("Path", "r"); infpSDW=fopen("HEADER", "r"); /* infp0 reads Any and All Filenames at 'HEADER.TXT', the same as 'Dual-Way.Exe' */ infpZIP=fopen("HEADER", "r"); /* infp0 reads Any and All Filenames at 'HEADER.TXT', the same as 'Dual-Way.Exe' */ // i=0; fgets(path, 128, infpPATH); if( strncmp(path, "Working Folder", 14)==0 ) firstwd (workingFD, &path[16]); fgets(path, 128, infpPATH); if( strncmp(path, "Working FolderP", 15)==0 ) firstwd (workingFDP, &path[16]); fgets(path, 128, infpPATH); if( strncmp(path, "Shadow Folder", 13)==0 ) firstwd (shadowFD, &path[16]); fgets(path, 128, infpPATH); if( strncmp(path, "Shadow FolderP", 13)==0 ) firstwd (shadowFDP, &path[16]); fgets(path, 128, infpPATH); if( strncmp(path, "ZIP Disk Label", 14)==0 ) firstwd (zipLabel, &path[16]); fgets(path, 128, infpPATH); if( strncmp(path, "ZIP Disk LabelP", 15)==0 ) firstwd (zipLabelP, &path[16]); /* Debugger, checking * printf("%s, %s, %s\n\n", workingFD, shadowFD, zipLabel); * printf("%s, %s, %s\n", workingFDP, shadowFDP, zipLabelP); */ WrkFDLen = strlen (workingFD); SdwFDLen = strlen (shadowFD); zipLBLen = strlen (zipLabel); printf("Now we need a little adjustment about Path differences in files.\n"); printf("For example, your files in :SDW: and :ZIP: looks like this.\n\n"); printf("\'Mac-3:1DaulWay:GRAPHICS.01:BalticSeal:\' (SDW in Hard disk)\n"); printf("\'Graphics.01:BalticSeal:\' (From ZIP disk)\n"); printf("1...5....0....5....0....5....0....5\n"); printf("1 10 20 30 \n\n"); printf("In this case, if we erase 28 characters for SDW and 13 for ZIP, \n"); printf("then, they become the same BalticSeal:. Thus, erase the path \n"); printf("difference by setting, \n"); printf(" MgPathSDW is 28,\n"); printf(" MgPathZIP is 13.\n"); printf("Count carefully by using a cursor. And come back here to go to \n"); printf("the next step below. To exit now, [File](menu) -> Quit.\n\n"); printf("Please type Number of MgPathSDW: "); scanf("%d", &MgPathSDW); printf("Magic Path for SDW is set to : %d\n\n", MgPathSDW); printf("Please type Number of MgPathZIP: "); scanf("%d", &MgPathZIP); printf("Magic Path for ZIP is set to : %d\n\n", MgPathZIP); printf("One moment. Then, go to see if SIZE stamps erased files are \n"); printf("there at :SDW:Erased and :ZIP:Erased. If there, we can go to \n"); printf("the final step \"5_Diff\". In case folder Path difference are \n"); printf("not erased, count Magic Path (SDW and ZIP) again, and run this \n"); printf("Program again. \n\n"); printf("(Optional): To open SIZE stamps erased files by double clicks,\n"); printf("go to MPW Shell and select all command lines under :SDW-Erased: and \n"); printf(":ZIP-Erased: by a mouse. Execute them by the right-most [enter]. \n\n"); /* Read all lines from the file stream pointing to "Ref.txt" */ while( (fgets(FNToOpen, 64, infpSDW))!=NULL ) { FILE *infp1, *outfp1; /* This fp1s are for SDW */ spacedwd (openedFN, &FNToOpen[0]); /* Opening filename, one-by-one */ sprintf (openedFNWithPath, "%s:SDW:%s", workingFD, openedFN); sprintf (writingFile, "%s:SDW:Erased:%s", workingFD, openedFN); infp1=fopen(openedFNWithPath, "r"); outfp1=fopen(writingFile, "w"); fprintf (outfp1, "SDW\n"); while( fgets(line, 256, infp1)!=NULL ){ /* NULL applies to the end of Pointer, while EOF applies to variables */ if ( strncmp(line, "Name", 4)==0 ) fprintf (outfp1, "%s", line); else if ( strncmp(line, "-----", 5)==0 ) fprintf (outfp1, "%s", line); else if ( strncmp(line, shadowFD, (SdwFDLen-1) )==0 ){ shiftedLine (jumpThere, &line[MgPathSDW]); fprintf (outfp1, "%s", jumpThere); }else if ( strncmp(line, shadowFDP, (SdwFDLen-1) )==0 ){ shiftedLine (jumpThere, &line[MgPathSDW+1]); fprintf (outfp1, "%s", jumpThere); }else if ( strncmp(line, "\n", 1)==0 ) fprintf (outfp1, "\n"); else{ /* At here, I need to apply SIZE Stamp Erasing */ WDsBegin (wordColumnBegin, &line[0]); WDsErase (wordColumnErase, &line[43]); WDsFinish (wordColumnFinish, &line[50]); fprintf (outfp1, "%s", wordColumnBegin); fprintf (outfp1, " "); fprintf (outfp1, "%s", wordColumnFinish); *wordColumnBegin =0; /* Reset */ *wordColumnErase =0; *wordColumnFinish =0; } /* closing Else-loop */ } /* closing While-loop */ *openedFN=0; /* Reset, in case */ *openedFNWithPath=0; fclose (infp1); fclose (outfp1); } /* closing, one-by-one file opening While-loop */ fclose (infpSDW); while( (fgets(FNToOpen, 64, infpZIP))!=NULL ) { FILE *infp2, *outfp2; /* This fp2s are for ZIP */ spacedwd (openedFN, &FNToOpen[0]); /* Opening filename, one-by-one */ sprintf (openedFNWithPath, "%s:ZIP:%s", workingFD, openedFN); sprintf (writingFile, "%s:ZIP:Erased:%s", workingFD, openedFN); infp2=fopen(openedFNWithPath, "r"); outfp2=fopen(writingFile, "w"); fprintf (outfp2, "ZIP\n"); while( fgets(line, 256, infp2)!=NULL ){ /* NULL applies to the end of Pointer, while EOF applies to variables */ if ( strncmp(line, "Name", 4)==0 ) fprintf (outfp2, "%s", line); else if ( strncmp(line, "-----", 5)==0 ) fprintf (outfp2, "%s", line); else if ( strncmp(line, zipLabel, (zipLBLen-1) )==0 ){ shiftedLine (jumpThere, &line[MgPathZIP]); fprintf (outfp2, "%s", jumpThere); }else if ( strncmp(line, zipLabelP, (zipLBLen-1) )==0 ){ shiftedLine (jumpThere, &line[MgPathZIP+1]); fprintf (outfp2, "%s", jumpThere); }else if ( strncmp(line, "\n", 1)==0 ) fprintf (outfp2, "\n"); else{ /* At here, I need to apply SIZE Stamp Erasing */ WDsBegin (wordColumnBegin, &line[0]); WDsErase (wordColumnErase, &line[43]); WDsFinish (wordColumnFinish, &line[50]); fprintf (outfp2, "%s", wordColumnBegin); fprintf (outfp2, " "); fprintf (outfp2, "%s", wordColumnFinish); *wordColumnBegin =0; /* Reset */ *wordColumnErase =0; *wordColumnFinish =0; } /* closing Else-loop */ } /* closing While-loop */ *openedFN=0; /* Reset, in case */ *openedFNWithPath=0; fclose (infp2); fclose (outfp2); } /* closing, one-by-one file opening While-loop */ fclose (infpZIP); }