home *** CD-ROM | disk | FTP | other *** search
/ Super Net 1 / SUPERNET_1.iso / PC / OTROS / EXTRAS / UUCODE / UUPC / TEST / UPC12ES1.ZIP / LIB / getseq.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-11  |  4.3 KB  |  128 lines

  1. /*--------------------------------------------------------------------*/
  2. /*    g e t s e q . c                                                 */
  3. /*                                                                    */
  4. /*    Job sequence number routines for UUPC/extended                  */
  5. /*--------------------------------------------------------------------*/
  6.  
  7. /*--------------------------------------------------------------------*/
  8. /*    Changes Copyright (c) 1990-1993 by Kendra Electronic            */
  9. /*    Wonderworks.                                                    */
  10. /*                                                                    */
  11. /*    All rights reserved except those explicitly granted by the      */
  12. /*    UUPC/extended license agreement.                                */
  13. /*--------------------------------------------------------------------*/
  14.  
  15. /*--------------------------------------------------------------------*/
  16. /*                          RCS Information                           */
  17. /*--------------------------------------------------------------------*/
  18.  
  19. /*
  20.  *    $Id: getseq.c 1.4 1993/06/21 02:17:31 ahd Exp $
  21.  *
  22.  *    Revision history:
  23.  *    $Log: getseq.c $
  24.  *     Revision 1.4  1993/06/21  02:17:31  ahd
  25.  *     Reset after missing file to PID
  26.  *
  27.  *     Revision 1.4  1993/06/21  02:17:31  ahd
  28.  *     Reset after missing file to PID
  29.  *
  30.  *     Revision 1.3  1993/04/11  00:32:05  ahd
  31.  *     Global edits for year, TEXT, etc.
  32.  *
  33.  * Revision 1.2  1992/11/19  02:58:00  ahd
  34.  * drop rcsid
  35.  *
  36.  * Revision 1.1  1992/11/16  05:00:26  ahd
  37.  * Initial revision
  38.  *
  39.  */
  40.  
  41. /*--------------------------------------------------------------------*/
  42. /*                        System include files                        */
  43. /*--------------------------------------------------------------------*/
  44.  
  45. #include <stdio.h>
  46. #include <process.h>
  47.  
  48. /*--------------------------------------------------------------------*/
  49. /*                    UUPC/extended include files                     */
  50. /*--------------------------------------------------------------------*/
  51.  
  52. #include "lib.h"
  53. #include "hlib.h"
  54. #include "getseq.h"
  55.  
  56. currentfile();
  57.  
  58. /*--------------------------------------------------------------------*/
  59. /*    g e t s e q                                                     */
  60. /*                                                                    */
  61. /*    Return next available sequence number for UUPC processing       */
  62. /*--------------------------------------------------------------------*/
  63.  
  64. long getseq()
  65. {
  66.    char seqfile[FILENAME_MAX];
  67.    FILE *seqfile_fp;
  68.    long seq;
  69.  
  70.    mkfilename(seqfile, E_confdir, SFILENAME);
  71.    if ((seqfile_fp = FOPEN(seqfile, "r",TEXT_MODE)) != nil(FILE))
  72.    {
  73.       fscanf(seqfile_fp, "%ld", &seq);
  74.       fclose(seqfile_fp);
  75.    }
  76.    else {
  77.       seq = getpid();
  78.       printerr( seqfile );
  79.    };
  80.  
  81. /*--------------------------------------------------------------------*/
  82. /*                       Update sequence number                       */
  83. /*--------------------------------------------------------------------*/
  84.  
  85.    if ((seqfile_fp = FOPEN(seqfile, "w",TEXT_MODE)) != nil(FILE))
  86.    {
  87.       fprintf(seqfile_fp, "%ld\n", seq+1);
  88.       fclose(seqfile_fp);
  89.    }
  90.    else {
  91.       printerr( seqfile );
  92.       panic();
  93.    }
  94.  
  95.    printmsg(5, "getseq: seq#=%ld", seq);
  96.    return seq;
  97.  
  98. } /*getseq*/
  99.  
  100. /*--------------------------------------------------------------------*/
  101. /*    J o b N u m b e r                                               */
  102. /*                                                                    */
  103. /*    Given a job sequence number, returns a character string for use */
  104. /*    in file names                                                   */
  105. /*--------------------------------------------------------------------*/
  106.  
  107. char *JobNumber( long sequence )
  108. {
  109.       static char buf[4];
  110.       const long base = bflag[F_ONECASE] ? 36 : 62;
  111.       static const char set[] =
  112.          "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  113.       size_t count = sizeof buf - 1;
  114.  
  115.       buf[count] = '\0';
  116.  
  117.       sequence %= (base*base*base);
  118.  
  119.       while( count-- > 0 )
  120.       {
  121.          buf[count] = set[ (int) (sequence % base) ];
  122.          sequence /= base ;
  123.       } /* while */
  124.  
  125.       return buf;
  126.  
  127. } /* JobNumber */
  128.