home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------- */
- /* MAKEKEY.C */
- /* MakeKey erstellt aus den Werten der im aktuellen */
- /* Verzeichnis vorhandenen Dateien eine Schlüssel- */
- /* datei. In diese Schlüsseldatei werden Name, */
- /* Extension, Größe, Datum und Uhrzeit im */
- /* ASCII-Format eingetragen, damit die Schlüssel- */
- /* datei bei Bedarf auch mit einem Editor be- */
- /* arbeitet werden kann. */
- /* ------------------------------------------------- */
- /* Parameter */
- /* Eingabe : argc : Anzahl der übergebenen */
- /* Parameter */
- /* *argv[] : Zeiger auf die übergebenen */
- /* Parameter */
- /* Ausgabe : KEINE */
- /* ------------------------------------------------- */
- /* (c) 1991 Dirk Alpers & DMV-Verlag */
- /* ------------------------------------------------- */
-
- #include "def.h"
-
- /* --- Prototypen ---------------------------------- */
- void Parameter_auswerten(int argc, char *argv[],
- char *dest );
- void Anleitung_ausgeben(void);
- void fillfile(char *pfad);
-
- /* --- Globale Variablen --------------------------- */
- FILE *fp;
- /* Filepointer auf Schlüsseldatei */
-
- int GLOBAL = FALSE;
- /* auch Unterverzeichnisse bearbeiten */
- int PROMPT = FALSE;
- /* nachfragen, welche Dateien aufgenommen */
- /* werden sollen */
- int CHANGE = FALSE;
- /* Größe und Uhrzeit der Datei dürfen sich */
- /* ändern */
-
- void main(int argc, char *argv[])
- {
- char pfad[MAXPATH],
- /* Aktueller Pfad des Quelllaufwerks */
- dest[MAXPATH];
- /* Vollqualifizierter Schlüsseldateiname */
-
- printf("\nMAKEKEY 1.0 (C) 1990 Alpers/Dietl");
- Parameter_auswerten(argc, argv, dest);
- /* Auswertung der übergebenen Parameter */
-
- fp = fopen(dest, "w"); /* Schlüsseldatei erstellen */
- if (fp != NULL) {
- getcwd(pfad, MAXPATH);
- /* DOS: liefert das momentan gesetzte Directory */
- printf("\nDir: %s", pfad);
- /* als vollständigen Suchweg zurück */
- errno = 0;
- /* DOS: Globale Variable für Fehler bei */
- /* DOS-Aufrufen */
- fillfile(pfad); /* Füllen der Schlüsseldatei */
- fclose(fp); /* Schlüsseldatei schließen */
- } else
- printf("\nSchlüsseldatei kann nicht erstellt " +
- "werden\n");
- printf("\n");
- } /* main */
-
- /* ------------------------------------------------- */
- /* Modulname : fillfile */
- /* Aufgabe : Füllen der Schlüsseldatei mit vor- */
- /* gefundenen und gegebenenfalls aus- */
- /* gewählten Dateinamen und ihren */
- /* Attributen */
- /* ------------------------------------------------- */
- /* Parameter */
- /* Eingabe : Nächster zu durchsuchender Pfad */
- /* Ausgabe : KEINE */
- /* ------------------------------------------------- */
- void fillfile(char *pfad)
- {
- char auspfad[MAXPATH+1],
- /* Pfad für die Ausgabe in Datei */
- neuerpfad[MAXPATH],
- /* Geänderter Pfadname für Rekursion */
- filedes[43],
- /* File-Descriptiom */
- antwort1 = 'Y',
- /* Antwort auf Frage: "INCLUDE (Y/N)? */
- antwort2;
- /* Antwort auf Frage: "CHANGE (Y/N)? */
- struct ffblk datei;
- /* DOS: FileControlBlock */
-
- strcpy(auspfad,"*"); /* "*" in auspfad kopieren */
- strcat(auspfad,pfad); /* pfad an auspfad anhängen */
- fprintf(fp,"%s\n",auspfad);
- /* Verzeichnis in Schlüsseldatei speichern */
- strcpy(neuerpfad,pfad);
- /* pfad nach neuerpfad kopieren */
- if (neuerpfad[strlen(neuerpfad)-1] != '\\')
- strcat(neuerpfad,"\\*.*");
- /* "\*.*" an neuerpfad anhängen */
- else strcat(neuerpfad,"*.*");
- /* "*.*" an neuerpfad anhängen */
-
- findfirst(neuerpfad,&datei,0x27);
- /* DOS: ersten Eintrag im Directory suchen */
- while (! errno) {
- /* setzt errno auf 0 bei OK, sonst auf -1 */
- mkstring(filedes,date);
- /* Filenamen und Attribute in String konvertieren */
- /* TURBOC: Warning: Structure passed by */
- /* value ist OK */
- if (PROMPT || CHANGE)
- printf("\n%s",filedes);
-
- if (PROMPT)
- /* Nachfragen ob Eintrag erfolgen soll */
- {
- printf(" INCLUDE (Y/N)? ");
- antwort1 = toupper(getche());
- }
-
- if ((!PROMPT || (antwort1 == 'Y')) && CHANGE)
- /* Nachfragen ob geändert werden darf */
- {
- printf(" CHANGE (Y/N)? ");
- antwort2 = toupper(getche());
- }
-
- if ((antwort1 == 'Y') || (!PROMPT))
- {
- if ((antwort2 == 'Y') && (CHANGE))
- /* Änderungen erlaubt (J/N)? */
- strcat(filedes,"_C");
- /* Änderungszeichen anhängen */
- else strcat(filedes,"__");
- /* Leerzeichen anhängen */
- fprintf(fp,"%s\n",filedes);
- /* File in Schlüsseldatei speichern */
- }
-
- findnext(&datei);
- /* DOS: Nächsten Directory-Eintrag suchen */
- } /* while */
- errno = 0; /* DOS */
-
- if (GLOBAL)
- {
- strcpy(neuerpfad, pfad); /* neuerpfad = pfad */
- if (neuerpfad[strlen(neuerpfad)-1] != '\\')
- strcat(neuerpfad,"\\*.*");
- else strcat(neuerpfad,"*.*");
-
- findfirst(neuerpfad, &datei, FA_DIREC);
- /* Erstes Directory suchen */
- while (!errno)
- /* Solange Directories gefunden */
- { if ((datei.ff_attrib & FA_DIREC) &&
- (datei.ff_name[0] != '.'))
- {
- strcpy(neuerpfad, pfad);
- /* Neuerpfad = pfad */
- if (neuerpfad[strlen(neuerpfad)-1] != '\\')
- strcat(neuerpfad,"\\");
- /* "\" anhängen */
- strcat(neuerpfad, datei.ff_name);
- /* Directorynamen anhängen */
- printf("\nDir: %s", neuerpfad);
-
- fillfile(neuerpfad);
- /* Rekursiver Aufruf von fillfile */
- }
- findnext(&datei);
- /* Nächstes Directory suchen */
- }
- errno = 0;
- } /* if GLOBAL */
- } /* fillfile */
-
-
-
- /* ------------------------------------------------- */
- /* Modulname : Parameter_auswerten */
- /* Aufgabe : Auswertung der dem Programm über- */
- /* gebenen Parameter: */
- /* dateiname: Vollqualifizierter Name */
- /* der Schlüsseldatei */
- /* /G, -G : Auswertung inkl. aller Subdirectories*/
- /* /P, -P : Bei jeder gefundenen Datei Nachfrage,*/
- /* ob sie aufgenommen werden soll */
- /* /C, -C : Angabe, ob die Datei im Laufe der */
- /* Zeit verändert werden darf */
- /* ------------------------------------------------- */
- /* Parameter */
- /* Eingabe : argc : Anzahl der übergebenen */
- /* Parameter */
- /* *argv[] : Zeiger auf die übergebenen */
- /* Parameter */
- /* Ausgabe : *dest : Zeiger auf den Namen der */
- /* Schlüsseldatei */
- /* ------------------------------------------------- */
- void Parameter_auswerten(int argc, char *argv[],
- char *dest)
- {
- int zaehler; /* Schleifenvariable */
-
- if ( (argc == 1) || (argv[1] == "/?") ||
- (argv[1] == "-?") )
- Anleitung_ausgeben();
- else {
- for (zaehler = 1; zaehler < argc; zaehler++)
- { strupr(argv[zaehler]);
-
- if ( (strcmp(argv[zaehler], "/G") == 0) ||
- (strcmp(argv[zaehler], "-G") == 0) )
- GLOBAL = TRUE;
- else if ( (strcmp(argv[zaehler], "/P") == 0) ||
- (strcmp(argv[zaehler], "-P") == 0) )
- PROMPT = TRUE;
- else if ( (strcmp(argv[zaehler], "/C") == 0) ||
- (strcmp(argv[zaehler], "-C") == 0) )
- CHANGE = TRUE;
- else strcpy(dest, argv[zaehler]);
- } /* for */
- }
-
- if (! strcmp(dest, "") || (dest[0] == '/') ||
- (dest[0] == '-') )
- Anleitung_ausgeben();
- } /* Parameter_auswerten */
-
-
- /* ------------------------------------------------- */
- /* Modulname : Anleitung_ausgeben */
- /* Aufgabe : Ausgabe der Syntax von MAKEKEY */
- /* ------------------------------------------------- */
- /* Parameter */
- /* Eingabe : KEINE */
- /* Ausgabe : KEINE */
- /* ------------------------------------------------- */
- void Anleitung_ausgeben(void)
- {
- printf("\nMAKEKEY - Schlüsseldatei für CLEARHD ");
- printf("erzeugen\n");
- printf("\nAufruf: MAKEKEY <Schlüsseldateiname> ");
- printf("[/G] [/P] [/C]");
- printf("\n /G - (Global) auch die ");
- printf("Unterverzeichnisse aufnehmen");
- printf("\n /P - (Prompt) jede Datei ");
- printf("abfragen");
- printf("\n /C - (Change) Werte der Datei ");
- printf("dürfen sich ändern\n");
-
- exit(1);
- /* DOS: Programmabbruch und ERRORLEVEL setzen */
- } /* Anleitung_ausgeben */
- /* ------------------------------------------------- */
- /* Ende von MAKEKEY.C */
-
-