home *** CD-ROM | disk | FTP | other *** search
- /* Olaf Heß, 1991 */
- /* Turbo C++ 1.0, Modell Small */
-
- #include <process.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <dir.h>
- #include <dos.h>
-
- #define TRUE 1
- #define FALSE 0
-
- /* Globale Variablen */
- char filename [13]; /* Name der zu suchenden Datei */
- int ext = TRUE; /* Name hat Erweiterung */
- char parameter [128]; /* Aufrufsparameter */
-
- /* ----------------------------------- */
-
- void execfile (char *pfad)
- /* Ausführen der in Pfad gespeicherten Datei mit Parametern*/
- {
- execl (pfad, "DUMMY", parameter, NULL);
- perror("Fehler bei EXEC");
- exit (2); /* Fehler bei der Ausführung => Abbruch */
- } /* execfile */
-
- /* ----------------------------------- */
-
- void findfile (char *pfad_z)
- /* Rekursive Suche durch den Verzeichnisbaum nach FILENAME */
- {
- char pfad [65]; /* Pfad */
- struct ffblk suchblk; /* Für findfirst/findnext */
- int result; /* Ergebnis von findfirst/findnext */
-
- strcat (strcpy (pfad, pfad_z), filename);
-
- if (ext == TRUE) result = findfirst (pfad, &suchblk, 0x3F);
- else
- { /* Suche nach FILENAME + Erweiterung COM */
- strcat (strcat (strcpy (pfad, pfad_z), filename), ".COM");
- result = findfirst (pfad, &suchblk, 0x3F);
- if (result != 0)
- { /* Suche nach FILENAME + Erweiterung EXE */
- strcat (strcat (strcpy (pfad, pfad_z), filename), ".EXE");
- result = findfirst (pfad, &suchblk, 0x3F);
- } /* if */
- } /* else */
-
- if (result == 0) execfile (pfad); /* Gefunden => Ausführen */
- else
- { /* Suche nach Unterverzeichnissen in PFAD */
- strcat (strcpy (pfad, pfad_z), "*.*");
- result = findfirst (pfad, &suchblk, FA_DIREC);
- if (result == 0) do
- { /* Datei gefunden */
- if ((suchblk.ff_name [0] != '.') &&
- (suchblk.ff_attrib == 16))
- { /* Datei ist Unterverzeichnis => Durchsuchen */
- strcat (strcat (strcpy (pfad, pfad_z), suchblk.ff_name), "\\");
- findfile (pfad);
- } /* if */
- result = findnext (&suchblk); /* Suche nach weiterem Verzeichnis */
- } while (result == 0); /* Keine weiteren Dateien */
-
- } /* else */
- } /* findfile */
-
- /* ----------------------------------- */
-
- void main (int argc, char *argv [])
-
- {
- char laufwerk [4] = ""; /* Laufwerksbuchstabe */
-
- if (argc < 2)
- { /* Fehlender Programmname */
- printf ("\nRUN: Start eines Programmes aus jedem Verzeichnis heraus\n");
- printf ("\nAufruf: RUN [d:][Programmname] [Parameter]\n");
- printf ("\Die Angabe eines Laufwerksbuchstabens ist optional.\n");
- exit (1);
- } /* if */
- else
- {
- strcpy (parameter, argv [1]);
-
- if (parameter [1] == ':')
- { /* Es wurde ein Laufwerk angegeben */
- unsigned int i;
- laufwerk [0] = parameter [0];
- laufwerk [1] = ':';
- laufwerk [2] = '\0';
- for (i = 0; i <= strlen (parameter) + 1; i++)
- parameter [i] = parameter [i + 2];
- strcpy (filename, parameter);
- } /* if */
- else strcpy (filename, argv [1]); /* Kein Laufwerk angegeben */
-
- parameter [0] = '\0';
- printf ("\nSuche nach »%s«\n", filename);
-
- { /* Wurde FILENAME mit Erweiterung angegeben? */
- char *ptr;
- ptr = strchr (filename, '.');
- if (ptr == NULL) ext = FALSE;
- }
-
- if (argc > 2)
- { /* Parameter speichern */
- unsigned int i;
- char *blank = " ";
- for (i = 3; i <= argc; i++)
- {
- strcat (parameter, blank);
- strcat (parameter, argv [i - 1]);
- } /* for */
- } /* if */
-
- } /* else */
-
- findfile (strcat (laufwerk, "\\")); /* Los geht's... */
- printf ("\nNix gefunden...\n");
- } /* main */
-
- /* ----------------------------------- */
-
-