home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of Mecomp Multimedia 1
/
Mecomp-CD.iso
/
amiga
/
tools
/
cd
/
indexcd
/
bin
/
sources.lha
/
sources
/
IndexCreator.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-04-16
|
11KB
|
434 lines
/* 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
}