/* gccPj002.c */ /* Revised with brand new Field(s) Erasing Objects in 2008 */ /* 2Er - executable file posted */ /* History: PC "4Eraser" => Classic Macintosh by CodeWarrior 3 => MacOSX Xcode GCC */ /* (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. */ /* (2005-03-05) Since this "4_Eraser" is working fine for MacOSX (<< ported from * MacOS7/8/9 CodeWarrior version) , I will edit the internal message for OSX * here. Namely, no Path Difference Eraser required at OSX. */ /* (2005-03-12) Since a part of OWNER stamps which I want to erase is not * fixed width but flexibly floating in size, so I introduced a flexible * Sandwitch (*fild_no1, fild_no2) and Liquid Paper. Here "JUMP_NO" is * not necessary, but it came from the root of Sandwitch, PC Win3.1 codes. */ #include <stdio.h> #include <stdlib.h> #include <string.h> char line [256]; char upField [128]; /* there were upField[] & downField[] in 2005, now I only need one, so I kept upField. Didn't rename. */ char FNToOpen [64]; /* = filenamesToOpen */ char openedFN [64]; /* = opendFilename */ char openedFNP [64]; /* = opendFilenameWithPath */ char writingFile [64]; int OPTION; extern char *spacedwd (char *to, char *from); /* = spaced words, to capture blank-containing foldername */ /* Erasing Field, 1 */ extern char *copy_a_2_3_4_5_6_7_8_9 (char *to, char *from); /* Erasing Field, 4 */ extern char *copy_b_1_2_3_and_5_6_7_8_9 (char *to, char *from); /* Erasing Fields, 3+4 */ extern char *copy_c_1_2_and_5_6_7_8_9 (char *to, char *from); /* Erasing Fields, 1, 3+4 */ extern char *copy_d_2_and_5_6_7_8_9 (char *to, char *from); /* Erasing Fields, 1, 6+7+8 */ extern char *copy_e_2_3_4_5_and_9 (char *to, char *from); /* Erasing Fields, 2, 4+5 */ extern char *copy_f_1_and_3_and_6_7_8_9 (char *to, char *from); main() { int JUMP_NO; FILE *infpSDW, *infpZIP_FLASH; JUMP_NO=0; /* The folllowing ";" are meant to continue, not for the end of sentence. * I use this, because I saw Five Time of opening, so I like the compact space. * Maybe I replace to continue for clearness. */ if ( (infpSDW=fopen("Header", "r"))!= NULL) ; else if ( (infpSDW=fopen("Header.Txt", "r"))!= NULL) ; else{ printf("\n!!!!! Please put a \"Header(.txt)\" file about your Folder information.\n"); printf("!!!!! And do this again.\n\n"); exit (0); } if ( (infpZIP_FLASH=fopen("Header", "r"))!= NULL) ; else if ( (infpZIP_FLASH=fopen("Header.Txt", "r"))!= NULL) ; else{ exit (0); } /* Now, let's get started. */ printf("To be a flexible eraser to the slightly different formats of \n"); printf("\"Catalog.txt\", here are a couple of examples of erasing field. \n"); printf("Please examine your catalogs at \"SDW\" \n"); printf("and \"ZIP_FLASH\" folders, and find out which columns are \n"); printf("different among total nine(9) columns(fields), and come \n"); printf("back here to continue. \n\n"); printf("Please select which combination of column(s)(fields) you \n"); printf("want to erase for easy comparison. \n\n"); printf(" 1. Erasing Field No. 1 \n"); printf(" 2. Erasing Field No. 4 \n"); printf(" 3. Erasing Fields No. 3+4 \n"); printf(" 4. Erasing Fields No. 1, 3+4 \n"); printf(" 5. Erasing Fields No. 1, 6+7+8, Permission + Date,Time \n"); printf(" 6. Erasing Fields No. 2, 4+5, (5th is byte field) \n\n"); printf("Select Your Field(s)_Erasing_Option by Number [1, 2, 3, 4, 5 or 6] : "); scanf("%d", &OPTION); printf(" \n\n\n"); printf("\n\n\nOne moment. Then, go to see how the designated fields were erased \n"); printf("in files at ./SDW/Erased/ and ./ZIP_FLASH/Erased/. If erased files are there, we \n"); printf("can go to the last step \"3Diff\". \n\n\n"); /* Read all lines in each catalogs in the SDW folder, and apply Eraser =============== */ while( (fgets(FNToOpen, 64, infpSDW))!=NULL ) { FILE *infp1, *outfp1; /* This fp1s are for SDW */ spacedwd (openedFN, &FNToOpen[0]); /* Opening filename, one-by-one */ sprintf (openedFNP, "./SDW/%s.txt", openedFN); sprintf (writingFile, "./SDW/Erased/%s.txt", openedFN); infp1=fopen(openedFNP, "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, "total", 5)==0 ) fprintf (outfp1, "total\n"); else if ( strncmp(line, "./", 2)==0 ) fprintf (outfp1, "%s", line); else if ( strncmp(line, "\n", 1)==0 ) fprintf (outfp1, "\n"); else{ /* At here, I apply FIELD(s) Erasing Options */ /* ***************************************************************** */ if (OPTION==1) { copy_a_2_3_4_5_6_7_8_9 (upField, &line[0]); /* Erasing Field No.1 Only */ fprintf (outfp1, "%s", upField); /* Blanks for " -rwxrwxr-x" */ } if (OPTION==2) { copy_b_1_2_3_and_5_6_7_8_9 (upField, &line[0]); /* Erasing Field, No.4 Only */ fprintf (outfp1, "%s", upField); /* Blanks for "mkido" OR else */ } if (OPTION==3) { copy_c_1_2_and_5_6_7_8_9 (upField, &line[0]); /* Erasing Fields, 3+4 */ fprintf (outfp1, "%s", upField); /* Blanks for "mkido mkido" OR else */ } if (OPTION==4) { copy_d_2_and_5_6_7_8_9 (upField, &line[0]); /* Erasing Fields, 1, 3+4 */ fprintf (outfp1, "%s", upField); /* Blanks for "-rwxrwxr-x mkido mkido" OR else */ } if (OPTION==5) { copy_e_2_3_4_5_and_9 (upField, &line[0]); /* Erasing Fields, 1, 6+7+8 */ fprintf (outfp1, "%s", upField); /* DEBUG Switch */ /* Blanks for 1st "-rwxrwxr-x" 6th_7th_8th "Apr 11 20:23" */ } if (OPTION==6) { copy_f_1_and_3_and_6_7_8_9 (upField, &line[0]); /* Erasing Fields, 2, 4+5 */ fprintf (outfp1, "%s", upField); /* Blanks for 2nd "3" and 4th_5th "mitsuruk 102" OR else */ } /* ********************************************************************* */ } /* closing Else-loop */ } /* closing While-loop of SDW catalog Reading*/ *openedFN=0; /* Reset, in case */ *openedFNP=0; fclose (infp1); fclose (outfp1); } /* closing, one-by-one file opening While-loop */ fclose (infpSDW); /* Read all lines in each catalogs in the ZIP_FLASH folder, and apply Eraser =============== */ while( (fgets(FNToOpen, 64, infpZIP_FLASH))!=NULL ) { FILE *infp2, *outfp2; /* This fp2s are for ZIP_FLASH */ spacedwd (openedFN, &FNToOpen[0]); /* Opening filename, one-by-one */ sprintf (openedFNP, "./ZIP_FLASH/%s.txt", openedFN); sprintf (writingFile, "./ZIP_FLASH/Erased/%s.txt", openedFN); infp2=fopen(openedFNP, "r"); outfp2=fopen(writingFile, "w"); fprintf (outfp2, "ZIP_FLASH\n"); while( fgets(line, 256, infp2)!=NULL ){ /* NULL applies to the end of Pointer, while EOF applies to variables */ if ( strncmp(line, "total", 5)==0 ) fprintf (outfp2, "total\n"); else if ( strncmp(line, "./", 2)==0 ) fprintf (outfp2, "%s", line); else if ( strncmp(line, "\n", 1)==0 ) fprintf (outfp2, "\n"); else{ /* At here, I apply FIELD(s) Erasing Options */ /* ***************************************************************** */ if (OPTION==1) { copy_a_2_3_4_5_6_7_8_9 (upField, &line[0]); /* Erasing Field No.1 Only*/ fprintf (outfp2, "%s", upField); /* Blanks for " -rwxrwxr-x" */ } if (OPTION==2) { copy_b_1_2_3_and_5_6_7_8_9 (upField, &line[0]); /* Erasing Field No.4 Only*/ fprintf (outfp2, "%s", upField); /* Blanks for "root" (in case of CD) OR else */ } if (OPTION==3) { copy_c_1_2_and_5_6_7_8_9 (upField, &line[0]); /* Erasing Fields, 3+4 */ fprintf (outfp2, "%s", upField); /* Blanks for "root root" OR else */ } if (OPTION==4) { copy_d_2_and_5_6_7_8_9 (upField, &line[0]); /* Erasing Fields, 1, 3+4 */ fprintf (outfp2, "%s", upField); /* Blanks for " -rwxrwxr-x" and "root root" OR else */ } if (OPTION==5) { copy_e_2_3_4_5_and_9 (upField, &line[0]); /* Erasing Fields, 1, 6+7+8 */ fprintf (outfp2, "%s", upField); /* Blanks for 1st "-rwxrwxr-x" and 6th_7th_8th "Apr 11 20:23" */ } if (OPTION==6) { copy_f_1_and_3_and_6_7_8_9 (upField, &line[0]); /* Erasing Fields, 2, 4+5 */ fprintf (outfp2, "%s", upField); /* Blanks for 2nd "1" and 4th_5th "admin 16384" OR else */ } /* ***************************************************************** */ } /* closing Else-loop */ } /* closing While-loop of ZIP catalog Reading */ *openedFN=0; /* Reset, in case */ *openedFNP=0; fclose (infp2); fclose (outfp2); } /* closing, one-by-one file opening While-loop */ fclose (infpZIP_FLASH); }