mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* sprintf.c (rb_f_sprintf): remove extra sign digit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									e6401638f4
								
							
						
					
					
						commit
						6d27ddd289
					
				
					 2 changed files with 17 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,7 @@
 | 
			
		|||
Sun Jul 18 08:13:58 2004  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* sprintf.c (rb_f_sprintf): remove extra sign digit.
 | 
			
		||||
 | 
			
		||||
Sun Jul 18 03:19:14 2004  Akinori MUSHA  <knu@iDaemons.org>
 | 
			
		||||
 | 
			
		||||
	* dir.c (bracket): use NULL instead of 0.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								sprintf.c
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								sprintf.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -25,31 +25,30 @@ remove_sign_bits(str, base)
 | 
			
		|||
    char *str;
 | 
			
		||||
    int base;
 | 
			
		||||
{
 | 
			
		||||
    char *s, *t, *end;
 | 
			
		||||
    unsigned long len;
 | 
			
		||||
    char *s, *t;
 | 
			
		||||
    
 | 
			
		||||
    s = t = str;
 | 
			
		||||
    len = strlen(str);
 | 
			
		||||
    end = str + len;
 | 
			
		||||
 | 
			
		||||
    if (base == 16) {
 | 
			
		||||
	while (t<end && *t == 'f') {
 | 
			
		||||
	while (*t == 'f') {
 | 
			
		||||
	    t++;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    else if (base == 8) {
 | 
			
		||||
	if (*t == '3') t++;
 | 
			
		||||
	while (t<end && *t == '7') {
 | 
			
		||||
	while (*t == '7') {
 | 
			
		||||
	    t++;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    else if (base == 2) {
 | 
			
		||||
	while (t<end && *t == '1') {
 | 
			
		||||
	while (*t == '1') {
 | 
			
		||||
	    t++;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    if (t > s) {
 | 
			
		||||
	while (*t) *s++ = *t++;
 | 
			
		||||
	*s = '\0';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return str;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -57,7 +56,7 @@ remove_sign_bits(str, base)
 | 
			
		|||
static char
 | 
			
		||||
sign_bits(base, p)
 | 
			
		||||
    int base;
 | 
			
		||||
    char *p;
 | 
			
		||||
    const char *p;
 | 
			
		||||
{
 | 
			
		||||
    char c = '.';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -234,7 +233,8 @@ rb_f_sprintf(argc, argv)
 | 
			
		|||
    VALUE *argv;
 | 
			
		||||
{
 | 
			
		||||
    VALUE fmt;
 | 
			
		||||
    char *buf, *p, *end;
 | 
			
		||||
    const char *p, *end;
 | 
			
		||||
    char *buf;
 | 
			
		||||
    int blen, bsiz;
 | 
			
		||||
    VALUE result;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +257,7 @@ rb_f_sprintf(argc, argv)
 | 
			
		|||
    buf = RSTRING(result)->ptr;
 | 
			
		||||
 | 
			
		||||
    for (; p < end; p++) {
 | 
			
		||||
	char *t;
 | 
			
		||||
	const char *t;
 | 
			
		||||
	int n;
 | 
			
		||||
 | 
			
		||||
	for (t = p; t < end && *t != '%'; t++) ;
 | 
			
		||||
| 
						 | 
				
			
			@ -549,7 +549,7 @@ rb_f_sprintf(argc, argv)
 | 
			
		|||
				s += 2;
 | 
			
		||||
			    }
 | 
			
		||||
			}
 | 
			
		||||
			sprintf(fbuf, "%%l%c", *p);
 | 
			
		||||
			sprintf(fbuf, "%%l%c", *p == 'X' ? 'x' : *p);
 | 
			
		||||
			sprintf(s, fbuf, v);
 | 
			
		||||
			if (v < 0) {
 | 
			
		||||
			    char d = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue