(linenum→info "unix/slp.c:2238")

glibc/2.7/libio/iopadn.c

    1: /* Copyright (C) 1993, 1997, 2002 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3: 
    4:    The GNU C Library is free software; you can redistribute it and/or
    5:    modify it under the terms of the GNU Lesser General Public
    6:    License as published by the Free Software Foundation; either
    7:    version 2.1 of the License, or (at your option) any later version.
    8: 
    9:    The GNU C Library is distributed in the hope that it will be useful,
   10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   12:    Lesser General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU Lesser General Public
   15:    License along with the GNU C Library; if not, write to the Free
   16:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   17:    02111-1307 USA.
   18: 
   19:    As a special exception, if you link the code in this file with
   20:    files compiled with a GNU compiler to produce an executable,
   21:    that does not cause the resulting executable to be covered by
   22:    the GNU Lesser General Public License.  This exception does not
   23:    however invalidate any other reasons why the executable file
   24:    might be covered by the GNU Lesser General Public License.
   25:    This exception applies to code released by its copyright holders
   26:    in files containing the exception.  */
   27: 
   28: #include "libioP.h"
   29: 
   30: #define PADSIZE 16
   31: static char const blanks[PADSIZE] =
   32: {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
   33: static char const zeroes[PADSIZE] =
   34: {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
   35: 
   36: _IO_ssize_t
   37: _IO_padn (fp, pad, count)
   38:       _IO_FILE *fp;
   39:       int pad;
   40:       _IO_ssize_t count;
   41: {
   42:   char padbuf[PADSIZE];
   43:   const char *padptr;
   44:   int i;
   45:   _IO_size_t written = 0;
   46:   _IO_size_t w;
   47: 
   48:   if (pad == ' ')
   49:     padptr = blanks;
   50:   else if (pad == '0')
   51:     padptr = zeroes;
   52:   else
   53:     {
   54:       for (i = PADSIZE; --i >= 0; )
   55:         padbuf[i] = pad;
   56:       padptr = padbuf;
   57:     }
   58:   for (i = count; i >= PADSIZE; i -= PADSIZE)
   59:     {
   60:       w = _IO_sputn (fp, padptr, PADSIZE);
   61:       written += w;
   62:       if (w != PADSIZE)
   63:         return written;
   64:     }
   65: 
   66:   if (i > 0)
   67:     {
   68:       w = _IO_sputn (fp, padptr, i);
   69:       written += w;
   70:     }
   71:   return written;
   72: }
   73: INTDEF(_IO_padn)
Syntax (Markdown)