|
|
when i tried to compile this program it showing
Linker Error: Undefined symbol _FILLBOX in module DR.C
the actual c program
Code:
//Save it as DR.C
#include<dos.h>
#include<dir.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<alloc.h>
#include<mem.h>
#include<signal.h>
#include<io.h>
#include<errno.h>
#include<bios.h>
#include<process.h>
#include<sys\stat.h>
/*#include"tool.h"*/
char path[401],MaxLines=20,NORMTXT=(1<<4)|15,HLTXT=(3<<4),drives[26],sorttype=0;
char TITLETXT=7<<4,DEFTXT=7,MSGTXT=(4<<4)|15,HELPTXT=7<<4;
char TITLEHL=(7<<4)|2,pattern[14]="*.*",temp[401],SYSTXT=(1<<4)|14;
char SELTXT=(1<<4)|14;
int SND=700;
struct ffblk *flist=NULL;
int showfiles();
char *apath;
void main(int argc,char *argv[])
{
int i;
char buf[4],*ptrstr;
getcwd(path,400);
hidecursor();
textattr(DEFTXT);
clrscr();
ptrstr=strrchr(argv[0],'\\');
i=strlen(argv[0])-strlen(ptrstr)+1;
apath=(char *)malloc(i);
strncpy(apath,argv[0],i);
apath[i]='\0';
set_sighnd();
drives[0]=1;
drives[1]=1;
for(i=2;i<26;i++)
{
buf[0]=i+65;
buf[1]=':';
buf[2]='\\';
buf[3]='\0';
if(!chdir(buf))
{
drives[i]=1;
}
else
drives[i]=0;
}
chdir(path);
if(argc>1)
{
setdisk(toupper(argv[1][0])-65);
chdir(argv[1]);
}
gotoxy(1,25);
textattr(SYSTXT);
clreol();
cprintf("File Manager 1.0 ³ Done by : Jeyakumar M S ³ Year : 2003");
showfiles();
window(1,1,80,25);
textattr(7);
clrscr();
setdisk(toupper(path[0])-65);
chdir(path);
showcursor();
}
select_drive()
{
int i;
window(42,2,80,5);
textattr(DEFTXT);
clrscr();
getch();
}
void fn(int no)
{
char *err[]={"Abort","Floating Point Trap","Illegal Instruction",\
"Interrupted","Memory Access Violation","Terminate"};
gotoxy(1,25);
if(no<6)
printf("Error Occured ( ERR# %u ) : %s",no,err[no]);
else
printf("Error Occured ( ERR# %u ) : Unknown",no);
}
set_sighnd()
{
signal(SIGABRT,fn);
signal(SIGFPE,fn);
signal(SIGILL,fn);
signal(SIGINT,fn);
signal(SIGSEGV,fn);
signal(SIGTERM,fn);
}
hidecursor()
{
_AH=0x01;
_CH=15;
_CL=15;
geninterrupt(0x10);
}
showcursor()
{
_AH=0x01;
_CH=14;
_CL=15;
geninterrupt(0x10);
}
print_fileinfo(int row,char attr,struct ffblk *f)
{
char atb[5];
unsigned char cx;
if(f->ff_name[0]=='\0')
return 0;
cx=(f->ff_reserved[0]=='\x1')?175:32;
if(cx==175 && attr!=HLTXT)
attr=SELTXT;
gotoxy(1,row);
textattr(NORMTXT);
cprintf("³");
textattr(attr);
cprintf("%c%-19s",cx,f->ff_name);
textattr(NORMTXT);
cprintf("³");
textattr(attr);
cprintf("%02d-%02d-%02d %02d:%02d",f->ff_fdate&31,(f->ff_fdate>>5)&15,((f->ff_fdate>>9)+80)%100,(f->ff_ftime>>11)&31,(f->ff_ftime>>5)&63);
textattr(NORMTXT);
cprintf("³");
textattr(attr);
if(f->ff_attrib & FA_DIREC)
cprintf("%10s","<Dir>");
else if(f->ff_attrib & FA_LABEL)
cprintf("%10s","<Drive>");
else
cprintf("%10ld",f->ff_fsize);
if(f->ff_attrib & FA_RDONLY)
atb[0]='R';
else
atb[0]='-';
if(f->ff_attrib & FA_HIDDEN)
atb[1]='H';
else
atb[1]='-';
if(f->ff_attrib & FA_SYSTEM)
atb[2]='S';
else
atb[2]='-';
if(f->ff_attrib & FA_ARCH)
atb[3]='A';
else
atb[3]='-';
atb[4]=0;
textattr(NORMTXT);
cprintf("³");
textattr(attr);
cprintf("%6s",atb);
textattr(NORMTXT);
cprintf("³");
return 1;
}
showtitle()
{
window(1,1,80,24);
textattr(TITLETXT);
gotoxy(1,1);
clreol();
cprintf("³%-20s³%-14s³%-10s³%-6s³ Directory Information","Name","Date","Size","Attrib");
if(sorttype!=0)
{
textattr(TITLEHL);
switch(sorttype)
{
case 1:
gotoxy(2,1);
cprintf("%-20s","Name");
break;
case 2:
gotoxy(2,1);
cprintf("%-20s","Name (.)");
break;
case 4:
gotoxy(23,1);
cprintf("%-14s","Date");
break;
case 3:
gotoxy(38,1);
cprintf("%-10s","Size");
break;
}
}
window(1,2,80,24);
}
showmsg(char *msg)
{
window(1,24,79,24);
textattr(MSGTXT);
clrscr();
while(*msg)
{
if(*msg>=' ' && *msg<='~')
cprintf("%c",*msg++);
else
msg++;
}
sound(SND);
delay(100);
nosound();
getch();
window(1,2,80,24);
}
showdirinfo(unsigned no)
{
unsigned i;
long sz=0;
char buf[400],*ptr,stype[][7]={"Unsort","Name","Ext","Size","Date"};
FILLBOX(56,1,80,10,NORMTXT>>4);
DRAWBOX(56,1,80,10,1,NORMTXT>>4,NORMTXT&15);
window(57,3,79,10);
ptr=strrchr(getcwd(buf,400),'\\');
ptr++;
gotoxy(1,1);
cprintf("Drive : %c",buf[0]);
gotoxy(1,2);
cprintf("Dir : %s",(*ptr=='\0')?"\\":ptr);
gotoxy(1,3);
cprintf("Pattern : %s",pattern);
gotoxy(1,4);
cprintf("Sort by : %s",stype[sorttype]);
gotoxy(1,5);
cprintf("Files : %u",no+1);
for(i=0;i<=no;i++)
{
sz=sz+(flist[i].ff_fsize/1024L);
}
gotoxy(1,6);
cprintf("Net Size: %uK",sz);
gotoxy(1,7);
cprintf("Memory : %uK",biosmemory());
gotoxy(1,8);
cprintf("Free : %luK",farcoreleft()/1024);
window(1,2,80,24);
}
showhelp()
{
/*gotoxy(1,22);
textattr(HELPTXT);
clreol();
cprintf("F1,F2,F3,F4-Sort ³ F5-Reverse ³ F6-Open ³ F7-Hidden ³ F11-Drive ³ F12-B/W");
gotoxy(56,12);*/
FILLBOX(56,11,80,21,NORMTXT>>4);
DRAWBOX(56,11,80,21,1,NORMTXT>>4,NORMTXT&15);
textattr(TITLETXT);
/*gotoxy(57,12);
cprintf("%9s Menu%9s","","");
textattr(NORMTXT);
gotoxy(57,15);
cprintf(" Press F10 to Activate");
gotoxy(67,16);
cprintf("Menu");*/
}
int showfiles()
{
int ans,psort=0;
unsigned cnt=0,i,start,ch,lno=0,pstart=1,plno=1,selfiles=0,tu;
unsigned char fattr=FA_DIREC|FA_LABEL;
struct ffblk f;
LOADLIST:
textattr(DEFTXT);
start=0;
pstart=1;
/*if(flist!=NULL)
free(flist);*/
ans=findfirst(pattern,&f,fattr);
while(!ans)
{
cnt++;
ans=findnext(&f);
}
flist=(struct ffblk *)realloc(flist,sizeof(struct ffblk )*(cnt+1));
if(flist==NULL)
return 0;
memset(flist,0,sizeof(struct ffblk )*(cnt+1));
ans=findfirst(pattern,&f,fattr);
cnt=0;
while(!ans)
{
if(strcmp(f.ff_name,".")!=0)
{
memcpy(&flist[cnt],&f,sizeof(f));
flist[cnt].ff_reserved[0]=0;
cnt++;
}
ans=findnext(&f);
}
if(cnt==0)
{
showmsg("No Files Found!!!");
strcpy(pattern,"*.*");
goto LOADLIST;
}
cnt--;
if(start>cnt-MaxLines-1)
start=0;
if(lno>MaxLines || lno>cnt)
lno=0;
showtitle();
psort=!sorttype;
shortlist(cnt);
while(1)
{
if(start>cnt-MaxLines+1)
start=0;
if(lno>MaxLines || lno>cnt)
lno=0;
if(sorttype!=psort)
{
showtitle();
showdirinfo(cnt);
showhelp();
psort=sorttype;
}
print_fileinfo(lno+1,HLTXT,&flist[lno+start]);
selfiles=0;
for(i=start;i<start+MaxLines && start!=pstart;i++)
{
if(i>cnt)
break;
if(flist[i].ff_reserved[0]=='\x1')
selfiles++;
if(i-start!=lno)
print_fileinfo(i-start+1,NORMTXT,&flist[i]);
}
textattr(NORMTXT);
for(;i<start+MaxLines && start!=pstart;i++)
{
gotoxy(1,i-start+1);
cprintf("³%-20s³%-14s³%-10s³%-6s³","","","","");
}
pstart=start;
gotoxy(1,MaxLines+1);
textattr(NORMTXT);
if(start+MaxLines<cnt-1)
cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄ More ÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÙ");
else
cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÙ");
plno=lno;
/*print_fileinfo(lno+1,HLTXT,&flist[lno+start]);*/
gotoxy(1,23);
textattr(DEFTXT);
clreol();
getcwd(temp,80);
if(strlen(temp)==3)
cprintf("%s%s",temp,flist[start+lno].ff_name);
else
cprintf("%s\\%s",temp,flist[start+lno].ff_name);
showinfo();
ch=getch();
if(ch==0)
ch=getch();
else
ch=tolower(ch);
textattr(DEFTXT);
switch(ch)
{ /*Space Bar*/
case 32:
flist[start+lno].ff_reserved[0]=!flist[start+lno].ff_reserved[0];
print_fileinfo(lno+1,HLTXT,&flist[lno+start]);
break;
case 80: /*Down Arrow*/
if(lno<MaxLines-1) lno++;
else if(start<cnt-MaxLines+1)
start++; break;
case 72: /*Up Arrow*/
if(lno>0) lno--;
else if(start>0)
start--;break;
case 81: /*Page Down*/
if((int)start+MaxLines-1<(int)cnt-MaxLines-1)
{
start=start+MaxLines-1;
}
else
{
if(start==cnt-MaxLines+1 || start==0)
{
sound(SND);
delay(100);
nosound();
}
if(cnt>MaxLines)
start=cnt-MaxLines+1;
else
start=0;
}
break;
case 82: /*Insert*/
close(creat(tmpnam(NULL),S_IFREG|S_IWRITE));
goto LOADLIST;
case 73: /* Page Up*/
if((int)start-MaxLines+1>1)
{
start=start-(MaxLines+1);
}
else
{
if(start==0)
lno=0;
start=0;
}
break;
case 8: /*BkSp - Key*/
if(!chdir(".."))
goto LOADLIST;
else
NOISE();
break;
case 13: /*Enter or Return Key*/
case 10:
if(flist[lno+start].ff_attrib&FA_DIREC)
{
chdir(flist[lno+start].ff_name);
psort=!sorttype;
goto LOADLIST;
}
else
{
char ext[4];
strcpy(ext,strrchr(flist[lno+start].ff_name,'.'));
if(stricmp(ext,".exe")==0 || stricmp(ext,".bat")==0 || stricmp(ext,".com")==0)
{
textattr(DEFTXT);
clrscr();
window(1,1,80,24);
textattr(7);
clrscr();
system(flist[lno+start].ff_name);
gotoxy(1,24);
hidecursor();
showmsg("Press any key...");
textattr(DEFTXT);
psort=!sorttype;
clrscr();
goto LOADLIST;
}
}
break;
case 83: /*Delele Key*/
selfiles=0;
for(tu=0;tu<=cnt;tu++)
if(flist[tu].ff_reserved[0]=='\x1')
selfiles++;
if(selfiles>0)
{
int i;
for(i=0;i<=cnt;i++)
{
if(flist[i].ff_reserved[0]=='\x0')
continue;
_chmod(flist[i].ff_name,1,0);
if(flist[i].ff_attrib&FA_DIREC)
{
if(rmdir(flist[i].ff_name))
{
gotoxy(1,23);
showmsg(strerror(errno));
}
}
else
{
if(unlink(flist[i].ff_name))
showmsg(strerror(errno));
}
}
goto LOADLIST;
}
else
if(flist[lno+start].ff_attrib&FA_DIREC)
{
if(rmdir(flist[lno+start].ff_name))
{
gotoxy(1,23);
showmsg(strerror(errno));
}
}
else
{
_chmod(flist[lno+start].ff_name,1,0);
unlink(flist[lno+start].ff_name);
}
goto LOADLIST;
case 71: /*Home Key*/
start=0;
lno=0;
break;
case 79: /*End Key*/
if(cnt>MaxLines)
start=cnt-MaxLines+1;
lno=MaxLines-1;
break;
/* Function Keys F1-F12 */
case 59:
shortbyname(cnt);
pstart=!start;
break;
case 60:
shortbyext(cnt);
pstart=!start;
break;
case 61:
shortbydate(cnt);
pstart=!start;
break;
case 62:
shortbysize(cnt);
pstart=!start;
break;
case 63:
reverselist(cnt);
pstart=!start;
break;
case 64:
window(1,1,80,24);
textattr(7);
clrscr();
strcpy(temp,"Edit ");
strcat(temp,flist[start+lno].ff_name);
system(temp);
goto LOADLIST;
case 65:
if(fattr==(FA_DIREC|FA_LABEL))
fattr=FA_DIREC|FA_SYSTEM|FA_HIDDEN|FA_LABEL;
else
fattr=FA_DIREC|FA_LABEL;
goto LOADLIST;
case 66:
change_pattern();
psort=!sorttype;
pstart=!start;
goto LOADLIST;
case 67:
window(1,1,80,25);
textattr(7);
clrscr();
showcursor();
printf("Type EXIT to Return Directory Browser...\n");
if(system(""))
showmsg("Error Occured!!!");
hidecursor();
goto LOADLIST;
case 68:
print_fileinfo(lno+1,NORMTXT,&flist[lno+start]);
ActivateMenu();
goto LOADLIST;
case 133: /*F11*/
if(changedrive())
{
pstart=!start;
goto LOADLIST;
}
else
{
pstart=!start;
psort=!sorttype;
}
break; /*F12*/
case 134:
switchcolors();
pstart=!start;
psort=!sorttype;
break;
/*Shift + Fn Key*/
case 89: /* Shift F6 */
window(1,1,80,25);
textattr((1<<4)|15);
clrscr();
show_file(flist[start+lno].ff_name);
showmsg("Press Any Key...");
goto LOADLIST;
case 135: /*Shift + F11*/
stopinfo();
gotoxy(1,23);
textattr(7);
clreol();
cprintf("Enter Path:");
scanf("%s",temp);
clrscr();
if(strchr(temp,':')!=NULL)
setdisk(toupper(temp[0])-65);
chdir(temp);
goto LOADLIST;
/*CTRL+Fn*/
case 94: /*CTRL+F1*/
ShowKeyList();
goto LOADLIST;
case 27: /*Esc*/
free(flist);
return 0;
default:
RECHECK:
if((ch>=32 && ch<=64) || (ch>=91 && ch<=126))
{
int sno;
sno=0;
for(i=start+lno+1;i<=cnt;i++)
{
if(toupper(flist[i].ff_name[0])==toupper(ch))
{
if((int)i-MaxLines+1>0)
{
start=i-MaxLines+1;
lno=MaxLines-1;
}
else
{
lno=i;
}
pstart=!start;
sno=1;
break;
}
}/*End of For*/
if(!sno && (int)lno!=-1)
{
lno=-1;
start=0;
plno=lno;
goto RECHECK;
}
else if((int)lno==-1)
lno=plno;
}
break;
}/*end of Switch*/
if(lno+start > cnt)
lno=cnt-start;
if(lno!=plno)
print_fileinfo(plno+1,NORMTXT,&flist[plno+start]);
}/*end of while(1)*/
}
shortbyname(unsigned no)
{
unsigned i,j;
struct ffblk fl;
for(i=0;i<no;i++)
for(j=i+1;j<=no;j++)
{
if(stricmp(flist[i].ff_name,flist[j].ff_name)>0 && !(flist[i].ff_attrib & (FA_DIREC|FA_LABEL)))
{
memcpy(&fl,&flist[i],sizeof(fl));
memcpy(&flist[i],&flist[j],sizeof(fl));
memcpy(&flist[j],&fl,sizeof(fl));
}
}
sorttype=1;
return 1;
}
shortbyext(unsigned no)
{
unsigned i,j;
struct ffblk fl;
for(i=0;i<no;i++)
for(j=i+1;j<=no;j++)
{
if(stricmp(strrchr(flist[i].ff_name,'.'),strrchr(flist[j].ff_name,'.'))>0 && strcmp(flist[i].ff_name,"..")!=0 && !(flist[i].ff_attrib & (FA_DIREC|FA_LABEL)))
{
memcpy(&fl,&flist[i],sizeof(fl));
memcpy(&flist[i],&flist[j],sizeof(fl));
memcpy(&flist[j],&fl,sizeof(fl));
}
}
sorttype=2;
return 1;
}
shortbysize(unsigned no)
{
unsigned i,j;
struct ffblk fl;
for(i=0;i<no;i++)
for(j=i+1;j<=no;j++)
{
if(flist[i].ff_fsize>flist[j].ff_fsize && strcmp(flist[i].ff_name,"..")!=0 && !(flist[i].ff_attrib & (FA_DIREC|FA_LABEL)))
{
memcpy(&fl,&flist[i],sizeof(fl));
memcpy(&flist[i],&flist[j],sizeof(fl));
memcpy(&flist[j],&fl,sizeof(fl));
}
}
sorttype=3;
return 1;
}
shortbydate(unsigned no)
{
unsigned i,j;
struct ffblk fl;
for(i=0;i<no;i++)
for(j=i+1;j<=no;j++)
{
if(flist[i].ff_fdate>=flist[j].ff_fdate && strcmp(flist[i].ff_name,"..")!=0 && !(flist[i].ff_attrib & (FA_DIREC|FA_LABEL)))
{
if(flist[i].ff_fdate==flist[j].ff_fdate)
if(flist[i].ff_ftime<flist[j].ff_ftime)
continue;
memcpy(&fl,&flist[i],sizeof(fl));
memcpy(&flist[i],&flist[j],sizeof(fl));
memcpy(&flist[j],&fl,sizeof(fl));
}
}
sorttype=4;
return 1;
}
reverselist(unsigned no)
{
struct ffblk fl;
unsigned i,j;
for(j=no,i=0;i<=no/2;i++,j--)
{
memcpy(&fl,&flist[i],sizeof(fl));
memcpy(&flist[i],&flist[j],sizeof(fl));
memcpy(&flist[j],&fl,sizeof(fl));
}
return 1;
}
changedrive()
{
char ch;
gotoxy(67,2);
cprintf(" \b");
fflush(stdin);
ch=getche();
ch=toupper(ch);
window(1,1,80,24);
textattr(7);
clrscr();
setdisk(ch-65);
fflush(stdin);
return 1;
}
stopinfo()
{
window(1,1,80,25);
gotoxy(1,25);
textattr(SYSTXT);
clreol();
cprintf("File Manager 1.0 ³ Done by : Jeyakumar M S ³ Year : 2003 ");
gotoxy(1,23);
textattr(HELPTXT);
clreol();
window(1,2,80,24);
}
showinfo()
{
struct time t;
struct date d;
static unsigned char pt,ph,ilx;
static nx,pos=79;
char ch;
char skeys[]="F1-Sort by Name ³ F2-Sort by Ext ³ F3-Sort by Date ³ F4-Sort by Size ³ F5 - Reverse List ³ " \
"F6-Open File ³ F7-Show / Hide System and Hidden Files ³ F8-Change Pattern ³ "\
"F9-DOS Shell ³ F10-Menu Mode ³ " \
"F11-Change Drive ³ F12-Color and B & W Mode Switch ³ Use ENTER key to run .BAT, .EXE, .COM Files ³ " \
"BKSP[\x1B]-Previous Directory ³ DEL-Delete File ³ SPACE-Select File Dir. ";
char *hints[40]={
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ",
" File Manager 1.0 ",
"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ",
" ",
" Developed by ",
" Jeyakumar MS ",
" 9,Balarengapuram ",
" 3rd cross street ",
" Madurai ",
" TamilNadu ",
" India ",
" Pincode-625009 ",
" ",
" Email: ",
" jeyakumarms@yahoo.com",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
while(kbhit())getch();
textattr(SYSTXT);
getdate(&d);
window(1,1,80,25);
gotoxy(1,25);
cprintf("File Manager 1.0 ³ Done by : Jeyakumar M S ³ Year : 2003 ");
do
{
gettime(&t);
if(t.ti_sec!=pt)
{
gotoxy(60,25);
textattr(SYSTXT);
clreol();
cprintf("³%02d-%02d-%04d %02d:%02d:%02d",d.da_day,d.da_mon,d.da_year,t.ti_hour,t.ti_min,t.ti_sec);
pt=t.ti_sec;
/*gotoxy(56,12);
FILLBOX(56,11,80,21,NORMTXT>>4);
DRAWBOX(56,11,80,21,1,NORMTXT>>4,NORMTXT&15);*/
BOXMENU(hints,57,12,1,ilx,ilx+8,NORMTXT&15,NORMTXT>>4);
ilx=(ilx+1)%29;
}
if(abs(t.ti_hund-ph)>15)
{
textattr(HELPTXT);
gotoxy(1,23);
clreol();
gotoxy(1+pos,23);
ch=skeys[nx+79-pos];
skeys[nx+79-pos]=0;
cprintf("%s",&skeys[nx]);
skeys[nx+79-pos]=ch;
if(nx==0)
{
pos=pos-1;
if(pos==0)
nx=2;
}
else
{
nx=(nx+1) % strlen(skeys);
if(nx==0)
pos=79;
}
ph=t.ti_hund;
}
}while(!kbhit());
window(1,2,80,24);
}
switchcolors()
{
static colset;
static pset[8];
if(colset==0)
{
pset[0]=TITLETXT;
pset[1]=TITLEHL;
pset[2]=NORMTXT;
pset[3]=HLTXT;
pset[4]=SYSTXT;
pset[5]=MSGTXT;
pset[6]=HELPTXT;
pset[7]=SELTXT;
TITLETXT=7<<4;
TITLEHL=(7<<4)|15;
NORMTXT=7;
HLTXT=7<<4;
SYSTXT=(7<<4)|15;
MSGTXT=7<<4;
HELPTXT=7<<4;
SELTXT=15;
colset=1;
}
else
{
TITLETXT=pset[0];
TITLEHL=pset[1];
NORMTXT=pset[2];
HLTXT=pset[3];
SYSTXT=pset[4];
MSGTXT=pset[5];
HELPTXT=pset[6];
SELTXT=pset[7];
colset=0;
}
}
shortlist(unsigned no)
{
switch(sorttype)
{
case 1:
shortbyname(no);break;
case 2:
shortbyext(no);break;
case 3:
shortbydate(no);break;
case 4:
shortbysize(no);break;
}
}
ShowKeyList()
{
char file[]="Key.txt",*tmp;
tmp=(char *)malloc(strlen(apath)+strlen(file)+1);
strcpy(tmp,apath);
strcat(tmp,file);
/*show_file(tmp);*/
VIEWFILE(tmp);
}
ActivateMenu()
{
int no;
char *mnu[10]={ " File / Directory ",\
" Edit ",\
" Settings ",\
" Tools ",\
" System Information ",\
" Help "};
window(1,1,80,25);
gotoxy(1,25);
textattr(SYSTXT);
clreol();
cprintf("File Manager 1.0 ³ Done by : Jeyakumar M S ³ Year : 2003 ");
gotoxy(56,12);
FILLBOX(56,12,80,22,NORMTXT>>4);
DRAWBOX(56,12,80,22,1,NORMTXT>>4,NORMTXT&15);
BOXMENU(mnu,57,14,1,0,6,NORMTXT&15,NORMTXT>>4);
textattr(TITLETXT);
gotoxy(57,13);
cprintf("%9s Menu%9s","","");
gotoxy(1,23);
clreol();
cprintf("Use %c %c Arrows ³ F10/ESC - Exit ³ ENTER - Select", 24,25);
no=ITEMSELC(mnu,6,57,15,1,NORMTXT,HLTXT);
/*TODO:Menu and Options*/
gotoxy(1,23);
clreol();
cprintf("TODO:Menu and Option");
NOISE();
getch();
}
change_pattern()
{
char ch;
gotoxy(67,4);
window(67,5,79,5);
textattr(7);
clrscr();
cscanf("%s%c",pattern,&ch);
/*while(kbhit()) getch();*/
window(1,1,80,24);
return 1;
}
show_file(char *name)
{
VIEWFILE(name);
return 1;
}
fpmove(FILE *f,int no)
{
long lastp=0;
int ccnt=0;
char ch;
do
{
if(fseek(f,-1,SEEK_CUR))
{
fseek(f,0,SEEK_SET);
break;
}
ch=getc(f);
ccnt++;
if(ch=='\t')
ccnt+=8;
if(ch==13 || ch==10 || ccnt==80)
{
lastp++;
ccnt=0;
if(ch==13 || ch==10)
if(fseek(f,-1,SEEK_CUR)!=0)
return 0;
}
fseek(f,-1,SEEK_CUR);
}while(lastp<no);
return 1;
}
and this is the header
TOOL.H
Code:
#include<stdio.h>
#include<ctype.h>
#include<dos.h>
void MESG(int,int);
void DRAWBOX(int,int,int,int,int,int,int);
/*----------------------prjtool.c----------------------*/
typedef struct tagDList
{
int len;
char *buf;
struct tagDList *next;
struct tagDList *prev;
}DList;
void FILLBOX(int x1,int y1,int x2,int y2,int cr)
{
int i,j;
textcolor(cr);
for(i=x1;i<=x2;i++)
{
for(j=y1;j<=y2;j++)
{
gotoxy(i,j);
cprintf("%c",219);
}
}
}
void DRAWBOX(x1,y1,x2,y2,lt,bg,fg)
int x1,x2,y1,y2,lt,bg,fg;
{
int i,dd[6];
textbackground(bg);
textcolor(fg);
if(lt!=2)
{
dd[0]=196;
dd[1]=179;
dd[3]=217;
dd[2]=218;
dd[4]=192;
dd[5]=191;
}
else
{
dd[1]=186;
dd[0]=205;
dd[3]=188;
dd[2]=201;
dd[4]=200;
dd[5]=187;
}
for(i=x1;i<=x2;i++)
{
gotoxy(i,y1);
cprintf("%c",dd[0]);
gotoxy(i,y2);
cprintf("%c",dd[0]);
}
for(i=y1;i<=y2;i++)
{
gotoxy(x1,i);
cprintf("%c",dd[1]);
gotoxy(x2,i);
cprintf("%c",dd[1]);
}
gotoxy(x1,y1);
cprintf("%c",dd[2]);
gotoxy(x2,y2);
cprintf("%c",dd[3]);
gotoxy(x1,y2);
cprintf("%c",dd[4]);
gotoxy(x2,y1);
cprintf("%c",dd[5]);
}
ERR()
{
MESG(9,0);
getch();
clrscr();
return 1;
}
SMHORZ(char *arr[10],int x,int y,int dis,int no,int tc,int tb)
{
int i,bx=0;
textcolor(tc);
textbackground(tb);
for(i=0;i<no;i++)
{
gotoxy(x+bx,y);
cprintf("%s",arr[i]);
bx+=dis;
}
return 1;
}
SMVER(char *arr[20],int y,int dis,int from,int to,int tc,int tb)
{
int i;
textcolor(tc);
textbackground(tb);
for(i=from;i<to;i++)
{
gotoxy(20-strlen(arr[i]),y+=dis);
cprintf("%s",arr[i]);
}
return 1;
}
BOXMENU(char *arr[],int x,int y,int dis,int from,int to,int tc,int tb)
{
int i;
textcolor(tc);
textbackground(tb);
for(i=from;i<to;i++)
{
gotoxy(x,y+=dis);
cprintf("%s",arr[i]);
}
return 1;
}
ITEMSELC(char *gr[10],int max,int x,int y,int space,char attr,char hattr)
{
int hit=0,co=1;
textattr(hattr);
gotoxy(x,y);
cprintf("%s",gr[co-1]);
while(hit!=13)
{
hit=toascii(getch());
/*textcolor(15);
textbackground(1);*/
textattr(attr);
gotoxy(x,y);
cprintf("%s",gr[co-1]);
/*textcolor(0);
textbackground(15);*/
textattr(hattr);
switch(hit)
{
case 72:if(co==1)
{
co=max;
y=y+space*(max-1);
gotoxy(x,y);
cprintf("%s",gr[co-1]);
}
else
{
co-=1;
y-=space;
gotoxy(x,y);
cprintf("%s",gr[co-1]);
}
break;
case 80:if(co==max)
{
co=1;
y=y-space*(max-1);
gotoxy(x,y);
cprintf("%s",gr[co-1]);
}
else
{
co+=1;
y+=space;
gotoxy(x,y);
cprintf("%s",gr[co-1]);
}
break;
case 68:
return -1;
case 27:co=max;
return(co);
default:gotoxy(x,y);
cprintf("%s",gr[co-1]);
break;
}
}
return(co);
}
NOTFOUND()
{
MESG(7,0);
getch();
return 1;
}
FOUND(int no)
{
MESG(6,no);
getch();
return 1;
}
void DELT(int no)
{
DRAWBOX(15,10,40,12,2,0,6);
gotoxy(18,11);
textcolor(10);
cprintf("%d Recored(s) Deleted.",no);
getch();
}
void MESG(int i,int no)
{
/*TODO:Show Message Window*/
}
NOISE()
{
sound(600);
delay(100);
nosound();
}
SCROLL_DOWN()
{
_AH=0x07;
_AL=1;
_BH=7;
_CH=0;
_CL=0;
_DH=24;
_DL=79;
geninterrupt(0x10);
}
SCROLL_UP()
{
_AH=0x06;
_AL=1;
_BH=7;
_CH=0;
_CL=0;
_DH=24;
_DL=79;
geninterrupt(0x10);
}
VIEWFILE(char *name)
{
FILE *f;
char str[80],ch,x=0,y=0;
DList *d;
f=fopen(name,"r");
if(f==NULL)
return 0;
d=(DList*)malloc(sizeof(DList));
d->buf=(char *)malloc(80);
if(d==NULL)
return 0;
d->next=NULL;
d->prev=NULL;
window(1,1,80,25);
sprintf(d->buf,"*** File : %s ***",name);
showcursor();
while(!feof(f))
{
fgets(str,79,f);
str[strlen(str)-1]='\0';
d->next=(DList*)malloc(sizeof(DList));
if(d->next==NULL)
break;
d->next->prev=d;
d->next->next=NULL;
d=d->next;
d->len=strlen(str);
d->buf=(char*)malloc(d->len+1);
if(d->buf==NULL)
break;
strcpy(d->buf,str);
}
d=d->prev;
d->next=NULL;
while(d->prev!=NULL)
d=d->prev;
for(y=1;y<=25;y++)
SCROLL_UP();
textattr(15);
for(y=1;y<25 && d!=NULL;y++)
{
gotoxy(1,y);
printf("%s\r",d->buf);
d=d->next;
}
y--;
d=d->prev;
do
{
ch=getch();
if(ch==0)
ch=getch();
switch(ch)
{
case 72:
if(y>1)
{
d=d->prev;
y--;
}
else if(d->prev!=NULL)
{
d=d->prev;
SCROLL_DOWN();
}
else
NOISE();
break;
case 80:
if(y<25 && d->next!=NULL)
{
d=d->next;
y++;
}
else if(d->next!=NULL)
{
d=d->next;
SCROLL_UP();
}
else
NOISE();
break;
}
gotoxy(1,y);
printf("%s\r",d->buf);
}while(ch!=27);
fclose(f);
hidecursor();
return 1;
}
When i compiled it, it shows following errors
•Linking DR.EXE:
Linker Error: Undefined symbol _DRAWBOX in module DR.C
Linker Error: Undefined symbol _FILLBOX in module DR.C
Linker Error: Undefined symbol _NOISE in module DR.C
Linker Error: Undefined symbol _BOXMENU in module DR.C
Linker Error: Undefined symbol _VIEWFILE in module DR.C
Linker Error: Undefined symbol _ITEMSELC in module DR.C
Please tell me how to solve it
|