home *** CD-ROM | disk | FTP | other *** search
- /* dcc dh1:IndexCD/IndexCreator.c */
-
- char *Titolo = "$VER: IndexCreator v1.0 (16-04-1997) © by Claudio Buraglio";
-
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #include "libraries/dosextens.h"
-
- extern struct FileHandle *Open();
- struct FileHandle *dos_fh;
-
- unsigned char *ReqTemp="T:ReqCreaEarInd.temp";
- unsigned char *InfTemp="T:Info.temp";
-
- unsigned char *ptr;
-
- unsigned char buff[255];
- unsigned char LabelCD[80];
- unsigned char now[10];
- unsigned char final[255];
- unsigned char comm[255];
- unsigned char dest[255];
- unsigned char *path[80];
- unsigned char *file[80];
- unsigned char *coda[125];
-
- FILE *fp;
- FILE *fpr;
- FILE *fpw;
-
- strtoupper(char *p)
- {
- while (*p != 0)
- {
- if ((*p > 'a'-1) && (*p < 'z'+1))
- *p = (*p & 0xdf);
- p++;
- }
- }
-
-
- FormatLine()
- {
- int s = 0;
- int d = 0;
-
- if (buff[s] != '|')
- {
- while (buff[s] != 0)
- {
- if(buff[s] == 0x22)
- buff[s] = 0x27;
- if(buff[s] == '~')
- buff[s] = '-';
- s++;
- }
- s = 0;
-
- while (buff[s] != ' ') // trova fine filename
- s++;
- d = s++;
- buff[d++] = '~';
-
- while (buff[s] == ' ') // trova inizio dir
- s++;
- while (buff[s] != ' ') // copia dir
- buff[d++] = buff[s++];
- buff[d++] = '~';
- s++;
-
- while (buff[s] == ' ') // trova inizio size
- s++;
- while (buff[s] != ' ') // copia Size
- buff[d++] = buff[s++];
- buff[d++] = '~';
-
- s = s + 5;
- while (buff[s] != 0) // copia Size
- buff[d++] = buff[s++];
- buff[d++] = 0;
- }
- else
- buff[s] = 0;
- }
-
-
- CheckName(char *f, char *p, char *c, char *s)
- {
- if (buff[0] != 0)
- {
-
- while ((*s != '~') && (*s != 0))
- {
- *f++ = *s++;
- }
- *f = 0x0;
- s++;
-
- while ((*s != '~') && (*s != 0))
- {
- *p++ = *s++;
- }
- *p = 0x0;
- s++;
-
- while ((*s != 0))
- {
- *c++ = *s++;
- }
- *c = 0x0;
-
- sprintf(comm,"%saminet/%s/%s", LabelCD, path, file);
- if (access(comm) != 0)
- {
- unsigned char linea[128];
- sprintf(linea, "\n\n%s\t...Not found\n\nFound...\n ", comm);
- Write(dos_fh, linea, strlen(linea));
-
- strcpy(linea, "c:List >t:list.tmp LFORMAT %F%N ");
- strcat(linea, comm);
- strcat(linea, "*");
- system(linea);
-
- FILE *fpt;
- if (fpt = fopen("t:list.tmp", "r"))
- {
- buff[0] = 0;
- fgets(buff, sizeof(buff), fpt);
-
- if((strstr(buff, ".lha") != 0) ||
- (strstr(buff, ".lzh") != 0) ||
- (strstr(buff, ".dms") != 0) ||
- (strstr(buff, ".jpg") != 0) ||
- (strstr(buff, ".exe") != 0) ||
- (strstr(buff, ".txt") != 0) ||
- (strstr(buff, ".anim")!= 0))
- {
- char *cptr;
- cptr = strchr(buff, 0xa);
- *cptr = 0;
- cptr = strrchr(buff, '/');
- cptr++;
- strcpy(file, cptr);
- sprintf(buff, "%s~%s~%s", file, path, coda);
- Write(dos_fh, buff, strlen(buff));
- }
- else
- { sprintf(linea," nothing\n");
- Write(dos_fh, linea, strlen(linea));
-
- }
- fclose(fpt);
- }
- }
- }
- }
-
-
-
- int wbmain()
- {
- getcwd(buff, sizeof(buff));
-
- ptr = strchr(buff, ':');
- ptr[0] = 0;
-
- strtoupper(buff);
- strcpy(LabelCD, buff);
-
- sprintf(final, "c:Info >%s %s:\n", InfTemp, LabelCD);
- system(final);
-
- int r = 0;
- if (fpr = fopen(InfTemp, "r"))
- {
- while (fgets(buff, sizeof(buff)-1, fpr))
- {
- strtoupper(buff);
- if (strstr(buff, LabelCD) != NULL)
- {
- if (strstr(buff, "READ/WRITE") != NULL) { r = 0; }
- if (strstr(buff, "READ ONLY") != NULL) { r = 1; }
- }
- }
- fclose(fpr);
- remove(InfTemp);
- }
-
- if (r == 1)
- {
- sprintf(final,"c:RequestChoice >NIL: CreatoreIndice \"Index not created! The Unit %s: is Read only.\" Exit\n", LabelCD);
- system(final);
- }
- else
- {
- system("c:Assign ICD: \"\"");
-
- system("c:assign >t:assign.temp VOLS");
-
- int scelta = 0;
- if (fp = fopen("t:assign.temp", "r"))
- {
- while (fgets(buff, sizeof(buff)-1, fp) && scelta == 0)
- {
- strtoupper(buff);
- if((strstr(buff, "AMINET") != 0) || (strstr(buff, "SET") != 0))
- {
- int i = 0;
- while(buff[i] != 0x20) { i++; } buff[i] = 0;
- strcpy(final, buff);
- strcpy(LabelCD, buff);
-
- sprintf(comm, "C:RequestChoice >%s IndexCreator \"I have found %s \" \"Make Index\" \"Find Other Label\"", ReqTemp, buff);
- system(comm);
-
- if (fpr = fopen(ReqTemp, "r"))
- {
- fgets(buff, sizeof(buff)-1, fpr);
- if ( strchr(buff, '0') != NULL)
- scelta = 0;
- else
- scelta = 1;
- fclose(fpr);
- remove(ReqTemp);
- }
- }
- }
- fclose(fp);
- remove("T:Assign.temp");
-
- if (scelta != 0)
- {
- int i = 0;
- while(final[i] != 0x20) { i++; } final[i] = 0;
-
- if (strcmp(LabelCD, "SET1A" ) == 0) strcpy(now, "199501_");
- else if (strcmp(LabelCD, "SET1B" ) == 0) strcpy(now, "199501_");
- else if (strcmp(LabelCD, "SET1C" ) == 0) strcpy(now, "199501_");
- else if (strcmp(LabelCD, "SET1D" ) == 0) strcpy(now, "199501_");
- else if (strcmp(LabelCD, "SET2A" ) == 0) strcpy(now, "199511_");
- else if (strcmp(LabelCD, "SET2B" ) == 0) strcpy(now, "199511_");
- else if (strcmp(LabelCD, "SET2C" ) == 0) strcpy(now, "199511_");
- else if (strcmp(LabelCD, "SET2D" ) == 0) strcpy(now, "199511_");
- else if (strcmp(LabelCD, "SET3A" ) == 0) strcpy(now, "199607_");
- else if (strcmp(LabelCD, "SET3B" ) == 0) strcpy(now, "199607_");
- else if (strcmp(LabelCD, "SET3C" ) == 0) strcpy(now, "199607_");
- else if (strcmp(LabelCD, "SET3D" ) == 0) strcpy(now, "199607_");
- else if (strcmp(LabelCD, "SET3A" ) == 0) strcpy(now, "199701_");
- else if (strcmp(LabelCD, "SET3B" ) == 0) strcpy(now, "199701_");
- else if (strcmp(LabelCD, "SET3C" ) == 0) strcpy(now, "199701_");
- else if (strcmp(LabelCD, "SET3D" ) == 0) strcpy(now, "199701_");
- else if (strcmp(LabelCD, "AMINET1" ) == 0) strcpy(now, "199307_");
- else if (strcmp(LabelCD, "AMINET2" ) == 0) strcpy(now, "199402_");
- else if (strcmp(LabelCD, "AMINET3" ) == 0) strcpy(now, "199406_");
- else if (strcmp(LabelCD, "AMINET4" ) == 0) strcpy(now, "199502_");
- else if (strcmp(LabelCD, "AMINET5" ) == 0) strcpy(now, "199503_");
- else if (strcmp(LabelCD, "AMINET6" ) == 0) strcpy(now, "199506_");
- else if (strcmp(LabelCD, "AMINET7" ) == 0) strcpy(now, "199508_");
- else if (strcmp(LabelCD, "AMINET8" ) == 0) strcpy(now, "199510_");
- else if (strcmp(LabelCD, "AMINET9" ) == 0) strcpy(now, "199512_");
- else if (strcmp(LabelCD, "AMINET10") == 0) strcpy(now, "199602_");
- else if (strcmp(LabelCD, "AMINET11") == 0) strcpy(now, "199604_");
- else if (strcmp(LabelCD, "AMINET12") == 0) strcpy(now, "199606_");
- else if (strcmp(LabelCD, "AMINET13") == 0) strcpy(now, "199608_");
- else if (strcmp(LabelCD, "AMINET14") == 0) strcpy(now, "199610_");
- else if (strcmp(LabelCD, "AMINET15") == 0) strcpy(now, "199611_");
- else if (strcmp(LabelCD, "AMINET16") == 0) strcpy(now, "199612_");
- else if (strcmp(LabelCD, "AMINET17") == 0) strcpy(now, "199702_");
- else if (strcmp(LabelCD, "AMINET18") == 0) strcpy(now, "199704_");
- else
- {
- time_t t = time(NULL);
- struct tm *tp = localtime(&t);
- strftime(now, sizeof(now)-1, "%Y", tp);
-
- int anno = 1997;
- sprintf(comm,"c:RequestChoice >t:year.tmp IndexCD \"Year of the CD-ROM %s\" ", LabelCD);
- while (strstr(buff, now) == 0)
- {
- sprintf(buff, "%d ", anno);
- strcat(comm, buff);
- anno++;
- }
- system(comm);
-
- if (fpr = fopen("t:year.tmp", "r"))
- {
- fgets(buff, sizeof(buff)-1, fpr);
- if (strlen(buff) == 2)
- {
- if (strchr(buff, '1') != NULL)
- strcpy(now,"1997");
- else if (strchr(buff, '2') != NULL)
- strcpy(now,"1998");
- else if (strchr(buff, '3') != NULL)
- strcpy(now,"1999");
- else if (strchr(buff, '4') != NULL)
- strcpy(now,"2000");
- else if (strchr(buff, '5') != NULL)
- strcpy(now,"2001");
- else if (strchr(buff, '6') != NULL)
- strcpy(now,"2002");
- else if (strchr(buff, '7') != NULL)
- strcpy(now,"2003");
- else if (strchr(buff, '8') != NULL)
- strcpy(now,"2004");
- else if (strchr(buff, '9') != NULL)
- strcpy(now,"2005");
- }
- fclose(fpr);
- }
- remove("t:year.tmp");
-
- sprintf(comm, "c:RequestChoice >t:month.tmp IndexCD \"Month of the CD-ROM %s\" 1 2 3 4 5 6 7 8 9 10 11 12", LabelCD);
- system(comm);
- if (fpr = fopen("t:month.tmp", "r"))
- {
- fgets(buff, sizeof(buff)-1, fpr);
-
- if (strlen(buff) == 2)
- {
- if (strchr(buff, '0') != NULL)
- strcat(now,"12_");
- else if (strchr(buff, '1') != NULL)
- strcat(now,"01_");
- else if (strchr(buff, '2') != NULL)
- strcat(now,"02_");
- else if (strchr(buff, '3') != NULL)
- strcat(now,"03_");
- else if (strchr(buff, '4') != NULL)
- strcat(now,"04_");
- else if (strchr(buff, '5') != NULL)
- strcat(now,"05_");
- else if (strchr(buff, '6') != NULL)
- strcat(now,"06_");
- else if (strchr(buff, '7') != NULL)
- strcat(now,"07_");
- else if (strchr(buff, '8') != NULL)
- strcat(now,"08_");
- else if (strchr(buff, '9') != NULL)
- strcat(now,"09_");
- }
- else
- {
- if (strstr(buff, "10") != NULL)
- strcat(now,"10_");
- else if (strstr(buff, "11") != NULL)
- strcat(now,"11_");
- }
- fclose(fpr);
- }
- remove("t:month.tmp");
- }
-
- chdir("ICD:Index/");
- sprintf( dest, "ICD:Index/%s%s.index", now, final);
-
- int r = access(dest, 0);
- if (r == 0)
- {
- sprintf(comm, "C:RequestChoice >%s IndexCreator \"WARNING! - The File %s.index already exists.\" Overwrite Exit", ReqTemp, final);
- system(comm);
-
- if (fpr = fopen(ReqTemp, "r"))
- {
- fgets(buff, sizeof(buff)-1, fpr);
- if ( strchr(buff, '0') == NULL)
- {
- remove(dest);
- sprintf(LabelCD,"%s:", final);
- Programma();
- }
- fclose(fpr);
- }
- remove(ReqTemp);
- }
- else
- {
- sprintf(LabelCD,"%s:", final);
- Programma();
- }
- }
- else
- {
- strcpy(comm, "C:RequestChoice >NIL: IndexCreator \"Nothing found.\" Exit");
- system(comm);
- }
- }
- }
- }
-
- int main(int arglen, char **argptr)
- {
-
-
- }
-
- Programma()
- {
- dos_fh = Open("CON:////IndexCreator by Claudio Buraglio", MODE_NEWFILE);
-
- sprintf(comm, "Scanning files on %s\n", LabelCD);
- Write(dos_fh, comm, strlen(comm));
-
- if (strstr(LabelCD, "AMINET"))
- sprintf(comm, "%sLists/Index_Dir.doc", LabelCD);
- else
- sprintf(comm, "%sLocal/Index_Dir.doc", LabelCD);
-
- if (fpr = fopen(comm, "r"))
- {
- if (fpw = fopen( dest, "w"))
- {
- while (fgets(buff, sizeof(buff)-1, fpr))
- {
- FormatLine();
- CheckName(file, path, coda, buff);
- fprintf(fpw, buff);
- }
- fclose(fpw);
- // sprintf(final, "\n");
- // Write(dos_fh, final, strlen(final));
- }
- fclose(fpr);
- }
-
- sprintf(comm, "C:RequestChoice IndexCreator \"Index of %s done.\" OK", LabelCD);
- system(comm);
-
- Close(dos_fh); // Chiude la window
- }
-
-