home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / filesbbs / dos / sbbs_src.exe / SBBS / VIEWFILE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-13  |  1.9 KB  |  74 lines

  1. #line 1 "VIEWFILE.C"
  2.  
  3. /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
  4.  
  5. #include "sbbs.h"
  6.  
  7. void viewfilecontents(file_t f)
  8. {
  9.     char str[128],cmd[128];
  10.     int i;
  11.  
  12. if(f.size<=0L) {
  13.     bputs(text[FileNotThere]);
  14.     return; }
  15.  
  16. sprintf(str,"%s%s",f.altpath > 0 && f.altpath<=altpaths
  17.     ? altpath[f.altpath-1] : dir[f.dir]->path
  18.     ,unpadfname(f.name,tmp));
  19. strcpy(tmp,f.name);
  20. truncsp(tmp);
  21. for(i=0;i<total_fviews;i++) {
  22.     if(!stricmp(tmp+9,fview[i]->ext)
  23.         && chk_ar(fview[i]->ar,useron)) {
  24.         strcpy(cmd,fview[i]->cmd);
  25.         break; } }
  26. if(i==total_fviews)
  27.     bprintf(text[NonviewableFile],tmp+9);
  28. else
  29.     if((i=external(cmdstr(cmd,str,str,NULL)
  30.         ,EX_OUTL|EX_OUTR|EX_INR|EX_CC))!=0)
  31.         errormsg(WHERE,ERR_EXEC,cmdstr(cmd,str,str,NULL),i);
  32. }
  33.  
  34. /****************************************************************************/
  35. /* Views file with:                                                         */
  36. /* (B)atch download, (V)iew file (E)xtended info, (Q)uit, or [Next]:        */
  37. /* call with ext=1 for default to extended info, or 0 for file view         */
  38. /* Returns -1 for Batch, 1 for Next, or 0 for Quit                          */
  39. /****************************************************************************/
  40. int viewfile(file_t f, int ext)
  41. {
  42.     char ch,str[256];
  43.     int i;
  44.  
  45. curdirnum=f.dir;    /* for ARS */
  46. while(online) {
  47.     if(ext)
  48.         fileinfo(f);
  49.     else
  50.         viewfilecontents(f);
  51.     ASYNC;
  52.     CRLF;
  53.     sprintf(str,text[FileInfoPrompt],unpadfname(f.name,tmp));
  54.     mnemonics(str);
  55.     ch=getkeys("BEVQ\r",0);
  56.     if(ch=='Q' || sys_status&SS_ABORT)
  57.         return(0);
  58.     switch(ch) {
  59.         case 'B':
  60.             addtobatdl(f);
  61.             CRLF;
  62.             return(-1);
  63.         case 'E':
  64.             ext=1;
  65.             continue;
  66.         case 'V':
  67.             ext=0;
  68.             continue;
  69.         case CR:
  70.             return(1); } }
  71. return(0);
  72. }
  73.  
  74.