home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prt_util / printfls.lha / Source.lha / Source / prf_info.c < prev    next >
C/C++ Source or Header  |  1992-06-16  |  4KB  |  117 lines

  1. /* prf_info.c */
  2. /* v 091 */
  3.  
  4. #include "prf.h"
  5. #include <dos/datetime.h>
  6.  
  7. long __regargs PrintProgInfo(struct prf_info *info,UBYTE *name)
  8. {
  9.  long rc = CMD_NEUTRAL;
  10.  struct FileInfoBlock *fib;
  11.  BPTR lock;
  12.  FILE *printer;
  13.  struct DateTime dt;
  14.  UBYTE d[40],t[40];
  15.  dt.dat_StrDate = d;
  16.  dt.dat_StrTime = t;
  17.  dt.dat_StrDay  = NULL;
  18.  dt.dat_Format  = FORMAT_DOS;
  19.  if(fib = (struct FileInfoBlock *)AllocDosObject(DOS_FIB,NULL))
  20.  {
  21.   if(lock = Lock(name,ACCESS_READ))
  22.   {
  23.    Examine(lock,fib);
  24.    if(printer = fopen("prt:","w"))
  25.    {
  26.     PrintSettings(info,printer);
  27.     BuildStatusline(info,name);
  28.     if(*(info->Statusline)) fprintf(printer,"%s\n",info->Statusline);
  29.     if(*(info->Headline)) fprintf(printer,"%s\n",info->Headline);
  30.     fprintf(printer,"\n" T_PROGINFO_HEADER " %s\n",name);
  31.     fprintf(printer,T_PROGINFO_CHANGED);
  32.     memcpy(&dt.dat_Stamp,&fib->fib_Date,sizeof(struct DateStamp));
  33.     DateToStr(&dt);
  34.     fprintf(printer," %s %s\n",d,t);
  35.     fprintf(printer,T_PROGINFO_BYTES  ":%ld\n",fib->fib_Size);
  36.     fprintf(printer,T_PROGINFO_BLOCKS ":%ld\n",fib->fib_NumBlocks);
  37.     fprintf(printer,T_PROGINFO_BITS_H "\n");
  38.     if(!(fib->fib_Protection & FIBF_READ   ))fprintf(printer,T_PROGINFO_R "\n");
  39.      else if(fib->fib_Protection & FIBF_READ   )fprintf(printer,T_NOT T_PROGINFO_R "\n");
  40.     if(!(fib->fib_Protection & FIBF_WRITE  ))fprintf(printer,T_PROGINFO_W "\n");
  41.      else if(fib->fib_Protection & FIBF_WRITE  )fprintf(printer,T_NOT T_PROGINFO_W "\n");
  42.     if(!(fib->fib_Protection & FIBF_DELETE ))fprintf(printer,T_PROGINFO_D "\n");
  43.       else if(fib->fib_Protection & FIBF_DELETE )fprintf(printer,T_NOT T_PROGINFO_D "\n");
  44.     if(!(fib->fib_Protection & FIBF_ARCHIVE))fprintf(printer,T_PROGINFO_A "\n");
  45.      else if(fib->fib_Protection & FIBF_ARCHIVE)fprintf(printer,T_NOT T_PROGINFO_A "\n");
  46.     if(!(fib->fib_Protection & FIBF_PURE   ))fprintf(printer,T_NOT T_PROGINFO_P "\n");
  47.      else if(fib->fib_Protection & FIBF_PURE   )fprintf(printer, T_PROGINFO_P "\n");
  48.     if(*fib->fib_Comment)fprintf(printer,T_PROGINFO_FILENOTE ": %s\n",fib->fib_Comment);
  49.     if(*(info->Footline))fprintf(printer,"%s\n",info->Footline);
  50.     fprintf(printer,T_PROGINFO_FOOT "%s \n\n",name);
  51.     if(info->flags.ff) fprintf(printer,"\f");
  52.     fclose(printer);
  53.    }
  54.    UnLock(lock);
  55.   }
  56.   FreeDosObject(DOS_FIB,(APTR)fib);
  57.  }
  58.  return (rc);
  59. }
  60.  
  61. long __regargs PrintIconInfo(struct prf_info *info,UBYTE *name)
  62. {
  63.  long rc = CMD_NEUTRAL;
  64.  struct DiskObject *dobj;
  65.  char buffer[30];
  66.  char filename[STR_SIZE];
  67.  FILE *printer;
  68.  if(!stricmp(name + (strlen(name) - 5), ".info"))
  69.    stccpy(filename,name,strlen(name) - 4);
  70.  else strcpy(filename,name);
  71.  if(dobj = GetDiskObject(filename))
  72.  {
  73.   if(printer = fopen("prt:","w"))
  74.   {
  75.    PrintSettings(info,printer);
  76.    BuildStatusline(info,name);
  77.    if(*(info->Statusline)) fprintf(printer,"%s\n",info->Statusline);
  78.    if(*(info->Headline)) fprintf(printer,"%s\n",info->Headline);
  79.    fprintf(printer,"\n" T_ICONINFO_HEADER "%s\n",name);
  80.    switch(dobj->do_Type)
  81.    {
  82.     case WBDISK     : strcpy(buffer,ITYPE_DISK)     ;break;
  83.     case WBDRAWER   : strcpy(buffer,ITYPE_DRAWER)   ;break;
  84.     case WBTOOL     : strcpy(buffer,ITYPE_TOOL)     ;break;
  85.     case WBPROJECT  : strcpy(buffer,ITYPE_PROJECT)  ;break;
  86.     case WBGARBAGE  : strcpy(buffer,ITYPE_GARBAGE)  ;break;
  87.     case WBDEVICE   : strcpy(buffer,ITYPE_DEVICE)   ;break;
  88.     case WBAPPICON  : strcpy(buffer,ITYPE_APP)      ;break;
  89.     default         : strcpy(buffer,ITYPE_UNKNOWN)  ;break;
  90.    }
  91.    fprintf(printer, T_ICONINFO_TTYPE " %s\n",buffer);
  92.    if(dobj->do_Type == WBTOOL)
  93.    {
  94.     fprintf(printer, T_ICONINFO_STACK " %ld\n",dobj->do_StackSize);
  95.    }
  96.    if(*dobj->do_DefaultTool)
  97.     fprintf(printer, T_ICONINFO_DEFTOOL " %s\n",dobj->do_DefaultTool);
  98.    if(*dobj->do_ToolTypes[0])
  99.    {
  100.     fprintf(printer, T_ICONINFO_TOOLTYPE "\n");
  101.     while(*dobj->do_ToolTypes)
  102.     {
  103.      fprintf(printer,"%s\n",*dobj->do_ToolTypes);
  104.      *(dobj->do_ToolTypes)++;
  105.     }
  106.    }
  107.    fprintf(printer,"\n" T_ICONINFO_FOOT   " %s \n\n",name);
  108.    if(*(info->Footline))fprintf(printer,"%s\n",info->Footline);
  109.    if(info->flags.ff) fprintf(printer,"\f");
  110.    fclose(printer);
  111.   }
  112.   FreeDiskObject(dobj);
  113.  }
  114.  return (rc);
  115. }
  116.  
  117.