home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
SWITCH2.ZIP
/
FF.C
next >
Wrap
C/C++ Source or Header
|
1990-01-22
|
2KB
|
94 lines
/* ff.c */
/* adapted from p.175 Adv. OS/2 Programming by Ray Duncan */
#include <os2.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>
FILEFINDBUF sbuf;
int drvno;
int count = 0;
char sname[256];
main(argc,argv)
int argc;
char **argv;
{
unsigned long drvmap;
if(argc < 2)
{
printf("findfile: missing filename\n");
exit(1);
}
DosQCurDisk(&drvno, &drvmap);
if(((strlen(argv[1])) >=2) && ((argv[1])[1] == ':'))
{
drvno = ((argv[1])[0] | 0x20) - ('a'-1);
if(DosSelectDisk(drvno))
{
printf("\nfindfile:bad drive\n");
exit(1);
}
argv[1] += 2;
}
strcpy(sname,argv[1]);
schdir("\\");
if(count == 0)
printf("\n\nfindfile: no files\n");
else
printf("\n\n%d file(s) found\n",count);
}
schdir(char *dirname)
{
unsigned shan = -1;
int scnt = 1;
DosChdir(dirname, 0L);
schfile();
if(!DosFindFirst("*.*",&shan,_A_NORMAL | _A_SUBDIR,
&sbuf,sizeof(sbuf),&scnt,0L))
{
do
{
if((sbuf.attrFile & _A_SUBDIR) && (sbuf.achName[0] != '.'))
{
schdir(sbuf.achName);
DosChdir("..",0L);
}
}while(DosFindNext(shan,&sbuf,sizeof(sbuf),&scnt) == 0);
}
DosFindClose(shan);
}
schfile()
{
unsigned shan = -1;
int scnt = 1;
if(!DosFindFirst(sname,&shan,_A_NORMAL,&sbuf,sizeof(sbuf),&scnt,0L))
{
do pfile();
while(DosFindNext(shan,&sbuf,sizeof(sbuf),&scnt)==0);
}
DosFindClose(shan);
}
pfile()
{
count++;
pdir();
printf("%s",strlwr(sbuf.achName));
}
pdir()
{
char dbuf[80];
int dlen=sizeof(dbuf);
DosQCurDir(0,dbuf,&dlen);
if(strlen(dbuf) != 0)
strcat(dbuf,"\\");
printf("\n%c:\\%s",drvno+'a'-1,strlwr(dbuf));
}