diff options
| author | rsc <rsc> | 2006-07-16 16:00:03 +0000 | 
|---|---|---|
| committer | rsc <rsc> | 2006-07-16 16:00:03 +0000 | 
| commit | b75c11b20edad4e507d5bc2455177de59a38ec9f (patch) | |
| tree | 3bf6c4b6f5983d41f56fb78ede01a36d24b3b3b1 | |
| parent | b74f4b57ae48719fca4fc621732b055b2debaf3e (diff) | |
| download | xv6-labs-b75c11b20edad4e507d5bc2455177de59a38ec9f.tar.gz xv6-labs-b75c11b20edad4e507d5bc2455177de59a38ec9f.tar.bz2 xv6-labs-b75c11b20edad4e507d5bc2455177de59a38ec9f.zip  | |
add %s to cprintf for cons_puts
| -rw-r--r-- | console.c | 13 | ||||
| -rw-r--r-- | ulib.c | 10 | ||||
| -rw-r--r-- | user.h | 1 | 
3 files changed, 23 insertions, 1 deletions
@@ -105,7 +105,7 @@ printint(int xx, int base, int sgn)  }  /* - * print to the console. only understands %d and %x. + * print to the console. only understands %d, %x, %p, %s.   */  void  cprintf(char *fmt, ...) @@ -131,8 +131,19 @@ cprintf(char *fmt, ...)        } else if(c == 'x' || c == 'p'){          printint(*ap, 16, 0);          ap++; +      } else if(c == 's'){ +        char *s = (char*)*ap; +        ap++; +        while(*s != 0){ +          real_cons_putc(*s); +          s++; +        }        } else if(c == '%'){          real_cons_putc(c); +      } else { +        // Unknown % sequence.  Print it to draw attention. +        real_cons_putc('%'); +        real_cons_putc(c);        }        state = 0;      } @@ -16,3 +16,13 @@ puts1(char *s)    return i;  } +char* +strcpy(char *s, char *t) +{ +	char *os; +	 +	os = s; +	while((*s++ = *t++) != 0) +		; +	return os; +} @@ -13,3 +13,4 @@ int cons_puts(char*);  int puts(char*);  int puts1(char*); +char* strcpy(char*, char*);  | 
