home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 157.lha / Arc_Src / arcmisc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-27  |  1.5 KB  |  67 lines

  1. /*  ARC - Archive utility - ARCMISC
  2.  
  3. System V Version 1.0.
  4.  
  5. */
  6. #include <ctype.h>
  7. #include "arc.h"
  8.  
  9. static INT _makefn(source,dest)
  10. unsigned char *source;
  11. unsigned char *dest;
  12. {
  13.     int j;
  14.  
  15.     setmem(dest, 17, 0);             /* clear result field */
  16.     if (strlen (source) > 1 && source[1] == ':')
  17.     for (j = 0; j < 2;)
  18.         dest[j++] = *source++;
  19.     for (j = 3; *source && *source != '.'; ++source)
  20.         if (j < 11)
  21.             dest[j++] = *source;
  22.     for (j = 12; *source; ++source)
  23.         if (j < 16)
  24.             dest[j++] = *source;
  25. }
  26.  
  27. /*    make a file name using a template
  28. */
  29. char *makefnam(rawfn,template,result)
  30. unsigned char *rawfn;                /* the original file name */
  31. unsigned char *template;             /* the template data */
  32. unsigned char *result;               /* where to place the result */
  33. {
  34.     unsigned char et[17],er[17];
  35.  
  36.     _makefn(template,et);
  37.     _makefn(rawfn,er);
  38.     *result=0;                       /* assure no data */
  39.     strcat(result,er[0]?er:et);
  40.     strcat(result,er[3]?er+3:et+3);
  41.     strcat(result,er[12]?er+12:et+12);
  42.     return ((char *)&result[0]);
  43. }
  44.  
  45. /*  convert a string to upper case  */
  46. upper(s) char *s; {
  47.     while (*s = toupper(*s)) ++s;
  48. }
  49.  
  50. setmem(dest,size,c) char *dest,c; INT size; {
  51.     int i;
  52.  
  53.     for (i = 0; i < size; dest[i] = c, i++);
  54. }
  55.  
  56. abort(s,arg1,arg2,arg3) char *s; {
  57.     fprintf(stderr,"arc: ");
  58.     fprintf(stderr,s,arg1,arg2,arg3);
  59.     fprintf(stderr,"\n");
  60.     perror("arc system:");
  61.     exit(1);
  62. }
  63.  
  64. rename(o, n) char *o, *n; {
  65.     return link(o, n) || unlink(o);
  66. }
  67.