home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / INTERNET / UPC2S1.ZIP / GETSEQ.C < prev    next >
C/C++ Source or Header  |  1993-06-20  |  4KB  |  125 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.3  1993/04/11  00:32:05  ahd
  28.  *     Global edits for year, TEXT, etc.
  29.  *
  30.  * Revision 1.2  1992/11/19  02:58:00  ahd
  31.  * drop rcsid
  32.  *
  33.  * Revision 1.1  1992/11/16  05:00:26  ahd
  34.  * Initial revision
  35.  *
  36.  */
  37.  
  38. /*--------------------------------------------------------------------*/
  39. /*                        System include files                        */
  40. /*--------------------------------------------------------------------*/
  41.  
  42. #include <stdio.h>
  43. #include <process.h>
  44.  
  45. /*--------------------------------------------------------------------*/
  46. /*                    UUPC/extended include files                     */
  47. /*--------------------------------------------------------------------*/
  48.  
  49. #include "lib.h"
  50. #include "hlib.h"
  51. #include "getseq.h"
  52.  
  53. currentfile();
  54.  
  55. /*--------------------------------------------------------------------*/
  56. /*    g e t s e q                                                     */
  57. /*                                                                    */
  58. /*    Return next available sequence number for UUPC processing       */
  59. /*--------------------------------------------------------------------*/
  60.  
  61. long getseq()
  62. {
  63.    char seqfile[FILENAME_MAX];
  64.    FILE *seqfile_fp;
  65.    long seq;
  66.  
  67.    mkfilename(seqfile, E_confdir, SFILENAME);
  68.    if ((seqfile_fp = FOPEN(seqfile, "r",TEXT_MODE)) != nil(FILE))
  69.    {
  70.       fscanf(seqfile_fp, "%ld", &seq);
  71.       fclose(seqfile_fp);
  72.    }
  73.    else {
  74.       seq = getpid();
  75.       printerr( seqfile );
  76.    };
  77.  
  78. /*--------------------------------------------------------------------*/
  79. /*                       Update sequence number                       */
  80. /*--------------------------------------------------------------------*/
  81.  
  82.    if ((seqfile_fp = FOPEN(seqfile, "w",TEXT_MODE)) != nil(FILE))
  83.    {
  84.       fprintf(seqfile_fp, "%ld\n", seq+1);
  85.       fclose(seqfile_fp);
  86.    }
  87.    else {
  88.       printerr( seqfile );
  89.       panic();
  90.    }
  91.  
  92.    printmsg(5, "getseq: seq#=%ld", seq);
  93.    return seq;
  94.  
  95. } /*getseq*/
  96.  
  97. /*--------------------------------------------------------------------*/
  98. /*    J o b N u m b e r                                               */
  99. /*                                                                    */
  100. /*    Given a job sequence number, returns a character string for use */
  101. /*    in file names                                                   */
  102. /*--------------------------------------------------------------------*/
  103.  
  104. char *JobNumber( long sequence )
  105. {
  106.       static char buf[4];
  107.       const long base = bflag[F_ONECASE] ? 36 : 62;
  108.       static const char set[] =
  109.          "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  110.       size_t count = sizeof buf - 1;
  111.  
  112.       buf[count] = '\0';
  113.  
  114.       sequence %= (base*base*base);
  115.  
  116.       while( count-- > 0 )
  117.       {
  118.          buf[count] = set[ (int) (sequence % base) ];
  119.          sequence /= base ;
  120.       } /* while */
  121.  
  122.       return buf;
  123.  
  124. } /* JobNumber */
  125.