/[hurd]/hurd-l4/laden/output.c
ViewVC logotype

Diff of /hurd-l4/laden/output.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by marcus, Sat Jul 26 17:26:09 2003 UTC revision 1.2 by marcus, Sun Sep 7 19:49:01 2003 UTC
# Line 83  putchar (int chr) Line 83  putchar (int chr)
83    
84    
85  static void  static void
86  print_nr (long long nr, int base)  print_nr (unsigned long long nr, int base)
87  {  {
88    static char *digits = "0123456789abcdef";    static char *digits = "0123456789abcdef";
89    char str[30];    char str[30];
90    int i = 0;    int i = 0;
91    
   if (nr < 0)  
     {  
       putchar ('-');  
       nr = -nr;  
     }  
   
92    do    do
93      {      {
94        str[i++] = digits[nr % base];        str[i++] = digits[nr % base];
# Line 108  print_nr (long long nr, int base) Line 102  print_nr (long long nr, int base)
102  }  }
103        
104    
105    static void
106    print_signed_nr (long long nr, int base)
107    {
108      unsigned long long unr;
109    
110      if (nr < 0)
111        {
112          putchar ('-');
113          unr = -nr;
114        }
115      else
116        unr = nr;
117    
118      print_nr (unr, base);
119    }
120      
121    
122  void  void
123  printf (const char *fmt, ...)  printf (const char *fmt, ...)
124  {  {
# Line 132  printf (const char *fmt, ...) Line 143  printf (const char *fmt, ...)
143            p++;            p++;
144            break;            break;
145    
146            case 'l':
147              p++;
148              if (*p != 'l')
149                {
150                  putchar ('%');
151                  putchar ('l');
152                  putchar (*(p++));
153                  continue;
154                }
155              p++;
156              switch (*p)
157                {
158                case 'o':
159                  print_nr (va_arg (ap, unsigned long long), 8);
160                  p++;
161                  break;
162    
163                case 'd':
164                case 'i':
165                  print_signed_nr (va_arg (ap, long long), 10);
166                  p++;
167                  break;
168    
169                case 'x':
170                case 'X':
171                  print_nr (va_arg (ap, unsigned long long), 16);
172                  p++;
173                  break;
174    
175                case 'u':
176                  print_nr (va_arg (ap, unsigned long long), 10);
177                  p++;
178                  break;
179    
180                default:
181                  putchar ('%');
182                  putchar ('l');
183                  putchar ('l');
184                  putchar (*(p++));
185                  break;
186                }
187              break;
188    
189          case 'o':          case 'o':
190            print_nr (va_arg (ap, unsigned int), 8);            print_nr (va_arg (ap, unsigned int), 8);
191            p++;            p++;
# Line 139  printf (const char *fmt, ...) Line 193  printf (const char *fmt, ...)
193    
194          case 'd':          case 'd':
195          case 'i':          case 'i':
196            print_nr (va_arg (ap, int), 10);            print_signed_nr (va_arg (ap, int), 10);
197            p++;            p++;
198            break;            break;
199    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26