Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Solve This Linker error (Please Urgntly) (http://www.go4expert.com/forums/solve-linker-error-urgntly-t10294/)

pranav_535 29Apr2008 23:42

Solve This Linker error (Please Urgntly)
 
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

pranav_535 30Apr2008 01:19

Re: Solve This Linker error (Please Urgntly)
 
Sorry This Is Not An Error! Please Delete This Thread

shabbir 30Apr2008 11:49

Re: Solve This Linker error (Please Urgntly)
 
Thread closed.


All times are GMT +5.5. The time now is 19:58.