home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / security / xinetd / str.1.2.0 / strprint.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-14  |  3.3 KB  |  210 lines

  1. /*
  2.  * (c) Copyright 1992 by Panagiotis Tsirigotis
  3.  * All rights reserved.  The file named COPYRIGHT specifies the terms 
  4.  * and conditions for redistribution.
  5.  */
  6.  
  7. static char RCSid[] = "$Id: strprint.c,v 1.1 1992/10/01 00:29:01 panos Exp $" ;
  8.  
  9. #include "sio.h"
  10.  
  11. #include "str.h"
  12.  
  13. #define INT_NULL                        ((int *)0)
  14.  
  15. /*
  16.  * The strx_* functions will never overwrite the buffer
  17.  * The str_* functions may overwrite the buffer
  18.  */
  19.  
  20. /*
  21.  * Group 1: the strx_* functions
  22.  */
  23.  
  24. /*
  25.  * This is the general purpose conversion function. It is invoked
  26.  * by all the other str[x]_* functions
  27.  */
  28. void strx_printv( ccp, buf, len, format, ap )
  29.     int *ccp ;
  30.     char *buf ;
  31.     int len ;
  32.     char *format ;
  33.     va_list ap ;
  34. {
  35.     __sio_od_t od ;
  36.     int cc ;
  37.  
  38.    /*
  39.     * First initialize the descriptor
  40.     */
  41.    od.buf = buf ;                                        /* NOT NEEDED        */
  42.    od.buf_end = len ? &buf[ len ] : (char *) ~0 ;    /* NEEDED                */
  43.    od.buffer_size = 0 ;                                  /* NOT NEEDED        */
  44.    od.start = buf ;                                      /* NOT NEEDED        */
  45.    od.nextb = buf ;                                      /* NEEDED            */
  46.    od.buftype = 0 ;                                      /* NOT NEEDED        */
  47.  
  48.    /*
  49.     * Do the conversion
  50.     */
  51.    cc = __sio_converter( &od, -1, format, ap ) ;
  52.     if ( len == 0 || od.nextb < od.buf_end )
  53.         *(od.nextb) = '\0' ;
  54.    if ( ccp )
  55.       *ccp = cc ;
  56. }
  57.  
  58.  
  59. void strx_print( ccp, buf, len, format, va_alist )
  60.     int *ccp ;
  61.     char *buf ;
  62.     int len ;
  63.     char *format ;
  64.     va_dcl
  65. {
  66.     va_list ap ;
  67.  
  68.     va_start( ap ) ;
  69.     strx_printv( ccp, buf, len, format, ap ) ;
  70.     va_end( ap ) ;
  71. }
  72.  
  73.  
  74. char *strx_sprint( buf, len, format, va_alist )
  75.     char *buf ;
  76.     int len ;
  77.     char *format ;
  78.     va_dcl
  79. {
  80.     va_list ap ;
  81.  
  82.     va_start( ap ) ;
  83.     strx_printv( INT_NULL, buf, len, format, ap ) ;
  84.     va_end( ap ) ;
  85.     return( buf ) ;
  86. }
  87.  
  88.  
  89. char *strx_sprintv( buf, len, format, ap )
  90.     char *buf ;
  91.     int len ;
  92.     char *format ;
  93.     va_list ap ;
  94. {
  95.     strx_printv( INT_NULL, buf, len, format, ap ) ;
  96.     return( buf ) ;
  97. }
  98.  
  99.  
  100. int strx_nprint( buf, len, format, va_alist )
  101.     char *buf ;
  102.     int len ;
  103.     char *format ;
  104.     va_dcl
  105. {
  106.     int cc ;
  107.     va_list ap ;
  108.  
  109.     va_start( ap ) ;
  110.     strx_printv( &cc, buf, len, format, ap ) ;
  111.     va_end( ap ) ;
  112.     return( cc ) ;
  113. }
  114.  
  115.  
  116. int strx_nprintv( buf, len, format, ap )
  117.     char *buf ;
  118.     int len ;
  119.     char *format ;
  120.     va_list ap ;
  121. {
  122.     int cc ;
  123.  
  124.     strx_printv( &cc, buf, len, format, ap ) ;
  125.     return( cc ) ;
  126. }
  127.  
  128.  
  129.  
  130. /*
  131.  * Group 2: the str_* functions
  132.  */
  133.  
  134. void str_print( ccp, buf, format, va_alist )
  135.     int *ccp ;
  136.     char *buf ;
  137.     char *format ;
  138.     va_dcl
  139. {
  140.     va_list ap ;
  141.  
  142.     va_start( ap ) ;
  143.     strx_printv( ccp, buf, 0, format, ap ) ;
  144.     va_end( ap ) ;
  145. }
  146.  
  147.  
  148. void str_printv( ccp, buf, format, ap )
  149.     int *ccp ;
  150.     char *buf ;
  151.     char *format ;
  152.     va_list ap ;
  153. {
  154.     strx_printv( ccp, buf, 0, format, ap ) ;
  155. }
  156.  
  157.  
  158. char *str_sprint( buf, format, va_alist )
  159.     char *buf ;
  160.     char *format ;
  161.     va_dcl
  162. {
  163.     va_list ap ;
  164.  
  165.     va_start( ap ) ;
  166.     strx_printv( INT_NULL, buf, 0, format, ap ) ;
  167.     va_end( ap ) ;
  168.     return( buf ) ;
  169. }
  170.  
  171.  
  172. char *str_sprintv( buf, format, ap )
  173.     char *buf ;
  174.     char *format ;
  175.     va_list ap ;
  176. {
  177.     strx_printv( INT_NULL, buf, 0, format, ap ) ;
  178.     return( buf ) ;
  179. }
  180.  
  181.  
  182. int str_nprint( buf, format, va_alist )
  183.     char *buf ;
  184.     char *format ;
  185.     va_dcl
  186. {
  187.     int cc ;
  188.     va_list ap ;
  189.  
  190.     va_start( ap ) ;
  191.     strx_printv( &cc, buf, 0, format, ap ) ;
  192.     va_end( ap ) ;
  193.     return( cc ) ;
  194. }
  195.  
  196.  
  197.  
  198. int str_nprintv( buf, format, ap )
  199.     char *buf ;
  200.     char *format ;
  201.     va_list ap ;
  202. {
  203.     int cc ;
  204.  
  205.     strx_printv( &cc, buf, 0, format, ap ) ;
  206.     return( cc ) ;
  207. }
  208.  
  209.  
  210.