/* mcPj010B.c */
/* After the success of File Reading and Folder Structure Handling, */
/* Now, get into the Real World Business, porting PC "2Batch" to Macintosh. */
/* Early notice of missing file "Header" is provided in this 10B version. */
/* "3_MPWBatch" reads the "HEADER" file, and writes "Batch" which is ready
* to run inside of MPW Shell, which includes, both SDWBatch, ZIPBatch, and
* Creator Stamp changes (SimpleText) of all catalogs and reports.
* I used to generate two separate Batch files, but at here, I start
* using all ABSOLUTE PATHs, so it doen't matter where the Batch file locates.
* It should run from anywhere. Besides, an user have to copy them into MPW,
* anyway, so, one file is fine.
*/
/* (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-> SimpleText (mcPj007C.c)
* but not fully tested in "MacDualWay".
*/
/* (2005-01-11) I decided to modify to normally terminate when "Header"
* file is missing by telling that "Please put the Header file and do it again".
* This is much better than a sudden Type 1 error closure.
*/
/* (2005-01-22) On occasion of "Header" Picture Posting in the general
* introduction (PURCHASE:ByVender), I tested Blank Space " " and Apostrophy
* " ' " (Fry's Electronics). It turned out that I'd better to Double-Quote
* All filenames in MPW. So I did. Then MPW errors are greatly reduced.
* A case which I am not sure is that a new folder(s) in ZIP (only) not yet
* in SDW . Watch out how it(they) work(s). This is a minor change, but a
* great effect. Notice introduction (2005-01-11) and Double Quote (2005-
* 01-22) are new to version "10B.c"
*/
/* (2005-02-05) MPW Shell command line for "Grand_Summary.Txt" is reversely
* ported here from "3_MPWBatch,OSX".
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char uType [16];
char lineSDW [256], lineZIP [256];
char lineSDWEr [256], lineZIPEr [256], lineDIFF [256];
/* Those above lines could be all 'line', but they are Global, so
* I took an extra cautious step to avoid any mixed-up.
*/
char folderName [128];
extern char *spacedwd (char *to, char *from); /* = spaced words, to capture blank-containing foldername */
main()
{
// char str[64], strPause[16];
char str1[64], str2[64], str3[64];
FILE *infpSDW, *infpZIP, *outfp1, *outfp2; /* These Pointers read fileNames list */
FILE *infpSDWEr, *infpZIPEr, *infpDIFF;
outfp1=fopen("Batch", "w"); /* outfp1 is general output for MPW Shell Batch. */
outfp2=fopen("Path", "w"); /* outfp2 is Absolute Path output, for following programs. */
/* ========== This Block is out of place But COPY CAME UP HERE, for early notice === */
/* ========== of MISSING "Header OR Header.txt" file. ======================== */
/* ================================================================================== */
/* 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("!!!!! Please put a \"Header\" file about your Folder information.\n");
printf("!!!!! And do this again.\n\n");
exit (0);
}
// infpSDW=fopen("Header", "r");
/* ================================================================================== */
/* Read string(s) from the standard input stream */
/* The following User's Magic Variable Inputs work pretty well */
printf("!!! Please type Folder Paths in Case Sensitive manner. Thank you!\n\n");
printf("Type Your Working Folder of this Dual-Way, \n");
printf(" starting from Macintosh name. \n");
printf(" For example, Mac-3:Test : ");
scanf("%s", &str1);
printf("Your Working Folder is set to : %s\n\n", str1);
fprintf(outfp2, "Working Folder: %s\n", str1);
fprintf(outfp2, "Working FolderP: \'%s\n", str1);
printf("Type Your Shadow (or Mirror) location, \n");
printf(" starting from Macintosh name, its folder\'s \n");
printf(" name which contains folder names in \'HEADER\' \n");
printf(" including parental folder names. \n");
printf(" For example, Mac-3:Shadow:Graphics : ");
scanf("%s", &str2);
printf("Your Shadow on the hard disk is set to : %s\n\n", str2);
fprintf(outfp2, "Shadow Folder: %s\n", str2);
fprintf(outfp2, "Shadow FolderP: \'%s\n", str2);
printf("Type Your ZIP disk name (or Floppy, Jaz ..), \n");
printf(" (and, if any, include parental folder names too) : \n");
printf(" For example, Graphics : ");
scanf("%s", &str3);
printf("Your ZIP disk name is set to : %s\n\n", str3);
fprintf(outfp2, "ZIP Disk Label: %s\n", str3); /* I don't know, I need this */
fprintf(outfp2, "ZIP Disk LabelP: \'%s\n", str3); /* I don't know, I need this */
fprintf (outfp1, ":For Grand Summary Report:\n");
fprintf (outfp1, "SetFile -c ttxt %s:Grand_Summary.Txt\n\n", str1);
fprintf (outfp1, ":FOLDERS:\n");
fprintf (outfp1, "NewFolder %s:SDW\n", str1);
fprintf (outfp1, "NewFolder %s:SDW:Erased\n", str1);
fprintf (outfp1, "NewFolder %s:ZIP\n", str1);
fprintf (outfp1, "NewFolder %s:ZIP:Erased\n", str1);
fprintf (outfp1, "NewFolder %s:DIFF\n", str1);
/* Read all lines from foldername listing in "HEADER" file */
/* First SDW */
/* infpSDW reads Any and All Filenames at 'HEADER', the same as 'Dual-Way.Exe' */
/* I added, if( infp=fopen() != NULL ) check point in case an user forgets the "Header" file,
* because I got many "Type 1 Error" due to this careless mistake.
* Since this codes opens "Header" file Five times by Five different Pointers,
* so, I am making sure that the file is provided. I want to put this all the way first,
* then, before typing the User's Path, the important reminder comes first.
*/
/* ========== Here is the ORIGINAL LOCATION of the notice ======================== */
/* ========== about MISSING "Header OR Header.txt" file. ======================== */
// if ( (infpSDW=fopen("Header", "r"))!= NULL) ;
// else if ( (infpSDW=fopen("Header.Txt", "r"))!= NULL) ;
// else{
// printf("!!!!! Please put a \"Header\" file about your Folder information.\n");
// printf("!!!!! And do this again.\n");
// exit (0);
// }
// infpSDW=fopen("Header", "r");
fprintf (outfp1, "\n:SDW-Catalog:\n");
while( (fgets(lineSDW, 64, infpSDW))!=NULL )
{
spacedwd (folderName, &lineSDW[0]); /* Opening foldername, one-by-one */
fprintf (outfp1, "Files -l -r \"%s:%s\" > \"%s:SDW:%s\"\n", str2, folderName, str1, folderName);
fprintf (outfp1, "SetFile -c ttxt \"%s:SDW:%s\"\n", str1, folderName);
} /* closing While-loop */
fclose (infpSDW);
*folderName=0; /* Reset, in case */
/* Second ZIP */
if ( (infpZIP=fopen("Header", "r"))!= NULL) ;
else if ( (infpZIP=fopen("Header.Txt", "r"))!= NULL) ;
else exit (0);
// infpZIP=fopen("HEADER.Backup", "r"); /* infpSDW reads Any and All Filenames at 'HEADER.TXT', the same as 'Dual-Way.Exe' */
fprintf (outfp1, "\n:ZIP-Catalog:\n");
while( (fgets(lineZIP, 64, infpZIP))!=NULL )
{
spacedwd (folderName, &lineZIP[0]); /* Opening foldername, one-by-one */
fprintf (outfp1, "Files -l -r \"%s:%s\" > \"%s:ZIP:%s\"\n", str3, folderName, str1, folderName);
fprintf (outfp1, "SetFile -c ttxt \"%s:ZIP:%s\"\n", str1,folderName);
} /* closing While-loop */
fclose (infpZIP);
/* Third SDW Erased */
if ( (infpSDWEr=fopen("Header", "r"))!= NULL) ;
else if ( (infpSDWEr=fopen("Header.Txt", "r"))!= NULL) ;
else exit (0);
// infpSDWEr=fopen("HEADER.Backup", "r"); /* infpSDW reads Any and All Filenames at 'HEADER.TXT', the same as 'Dual-Way.Exe' */
fprintf (outfp1, "\n:SDW:Erased:\n");
while( (fgets(lineSDWEr, 64, infpSDWEr))!=NULL )
{
spacedwd (folderName, &lineSDWEr[0]); /* Opening foldername, one-by-one */
fprintf (outfp1, "SetFile -c ttxt \"%s:SDW:Erased:%s\"\n", str1, folderName);
} /* closing While-loop */
fclose (infpSDWEr);
/* Fourth ZIP Erased */
if ( (infpZIPEr=fopen("Header", "r"))!= NULL) ;
else if ( (infpZIPEr=fopen("Header.Txt", "r"))!= NULL) ;
else exit (0);
// infpZIPEr=fopen("HEADER.Backup", "r"); /* infpSDW reads Any and All Filenames at 'HEADER.TXT', the same as 'Dual-Way.Exe' */
fprintf (outfp1, "\n:ZIP:Erased:\n");
while( (fgets(lineZIPEr, 64, infpZIPEr))!=NULL )
{
spacedwd (folderName, &lineZIPEr[0]); /* Opening foldername, one-by-one */
fprintf (outfp1, "SetFile -c ttxt \"%s:ZIP:Erased:%s\"\n", str1, folderName);
} /* closing While-loop */
fclose (infpSDWEr);
/* Fifth DIFF */
if ( (infpDIFF=fopen("Header", "r"))!= NULL) ;
else if ( (infpDIFF=fopen("Header.Txt", "r"))!= NULL) ;
else exit (0);
// infpDIFF=fopen("HEADER.Backup", "r"); /* infpSDW reads Any and All Filenames at 'HEADER.TXT', the same as 'Dual-Way.Exe' */
fprintf (outfp1, "\n:DIFF:\n");
while( (fgets(lineDIFF, 64, infpDIFF))!=NULL )
{
spacedwd (folderName, &lineDIFF[0]); /* Opening foldername, one-by-one */
fprintf (outfp1, "SetFile -c ttxt \"%s:DIFF:%s\"\n", str1, folderName);
} /* closing While-loop */
fclose (infpDIFF);
/* This message is moved down, because it prompts to look at Batch file which
* is empty, if this message is up before while-loop.
*/
printf("Now, we are going to do a first practice of MPW.\n");
printf("Please copy and paste the following line into at the \n");
printf("bottom of MPW-Shell. MPW-Shell shows a dozen of help commands \n");
printf("list. Don't mind anything about them, and just scroll down \n");
printf("all the way, and at the bottom after the line, paste the line \n");
printf("below.\n\n");
printf(" SetFile -c ttxt %s:Batch\n\n", str1);
printf("then, put the cursor at the end of command line, and press \n");
printf("the right-most [enter]-key on the keyboard (making sure not \n");
printf("the regular [return]-key).\n\n");
printf("After this, examine \"Batch\" file in this working folder is \n");
printf("changed from purple-&-yellow-bar icon to white-&-text icon. \n");
printf("If it changed, you can open it by simple double clicks. \n");
printf("If you find many command lines there, Conglaturations! We are\n");
printf("ready to go. If not, carefully re-type your macintosh name, \n");
printf("your working folder name(s), delimited by colons, without space. \n");
printf("Those names are case-senstive, so please type accurately. \n");
printf("Now, copy all the lines in \"Batch\" file into the bottom of \n");
printf("MPW Shell.\n\n");
printf("Type any key then [return] : ");
scanf( "%s", &uType);
printf("\n\nIf you get a trouble in this first MPW practice, read a note \n");
printf("of \"Mac_Note\" under introductory page of this DualWay, at \n");
printf("TuneFind -> Community. After practice, come back here for one \n");
printf("more page to read. \n");
printf("Type any key then [return] : ");
scanf( "%s", &uType);
/* This message is good, but too late, becuase this program is already 4_Eraser,
which is assuming all catalogs files exist in folders. Move into 3_Batch. */
printf("\n\n\nDid you success in the first MPW practice? Now, this paragraph explains \n");
printf("what to do next in advance here, after finish this \"3_MPWBatch\". \n");
printf("Please copy entire content of \"Batch\" file into MPW Shell bottom.\n");
printf("It has six groups: to make folders, to make catalogs of SDW and ZIP, \n");
printf("to erase Size-Stamps from all catalogs, to make them viewable by \n");
printf("simple Double-clicks.\n\n");
printf("Select five command lines in the first group :FOLDERS: by mouse, and \n");
printf("execute those command lines by as always pressing the right-most \n");
printf("[enter]-key (making sure not the regular [return]-key) at MPW Shell. \n");
printf("Double check \"SDW\", \"ZIP\", \"DIFF\" folders are made in your \n");
printf("working folder. If they are, the MPW Shell is working, so do two \n");
printf("more things. Select all command lines under :SDW-Catalog: and \n");
printf("execute them by right-most [enter], then do the same thing to \n");
printf(":ZIP-Catalog:. While making ZIP-Catalog, you must insert your Master \n");
printf("ZIP disk. Double check many catalogs of each folder are created, \n");
printf("both under \"SDW\" and \"ZIP\" folders.\n\n\n\n\n");
fclose (outfp1);
}