Skip to content

Commit

Permalink
convert C runtime to 32-bit runes;
Browse files Browse the repository at this point in the history
rune now unsigned.

R=r
DELTA=10  (1 added, 0 deleted, 9 changed)
OCL=34140
CL=34146
  • Loading branch information
rsc committed Aug 31, 2009
1 parent a843b45 commit 04a77ac
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 15 deletions.
8 changes: 4 additions & 4 deletions include/fmt.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef _FMT_H_
#define _FMT_H_ 1
#if defined(__cplusplus)
extern "C" {
extern "C" {
#endif
/*
* The authors of this software are Rob Pike and Ken Thompson.
Expand Down Expand Up @@ -30,16 +30,16 @@ struct Fmt{
void *farg; /* to make flush a closure */
int nfmt; /* num chars formatted so far */
va_list args; /* args passed to dofmt */
int r; /* % format Rune */
Rune r; /* % format Rune */
int width;
int prec;
unsigned long flags;
char *decimal; /* decimal point; cannot be "" */

/* For %'d */
char *thousands; /* separator for thousands */
/*

/*
* Each char is an integer indicating #digits before next separator. Values:
* \xFF: no more grouping (or \x7F; defined to be CHAR_MAX in POSIX)
* \x00: repeat previous indefinitely
Expand Down
17 changes: 9 additions & 8 deletions src/lib9/fmt/dofmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
*
* Copyright (c) 2002-2006 by Lucent Technologies.
* Portions Copyright (c) 2004 Google Inc.
*
*
* Permission to use, copy, modify, and distribute this software for any
* purpose without fee is hereby granted, provided that this entire notice
* is included in all copies of any software which is or includes a copy
* or modification of this software and in all copies of the supporting
* documentation for such software.
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES
* NOR GOOGLE INC MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING
* WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES
* NOR GOOGLE INC MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING
* THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
*/

Expand Down Expand Up @@ -618,12 +618,13 @@ __flagfmt(Fmt *f)
int
__badfmt(Fmt *f)
{
char x[3];
char x[2+UTFmax];
int n;

x[0] = '%';
x[1] = f->r;
x[2] = '%';
f->prec = 3;
__fmtcpy(f, (const void*)x, 3, 3);
n = 1 + runetochar(x+1, &f->r);
x[n++] = '%';
f->prec = n;
__fmtcpy(f, (const void*)x, n, n);
return 0;
}
2 changes: 1 addition & 1 deletion src/lib9/utf/utf.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

#include <stdint.h>

typedef signed int Rune; /* Code-point values in Unicode 4.0 are 21 bits wide.*/
typedef unsigned int Rune; /* Code-point values in Unicode 4.0 are 21 bits wide.*/

enum
{
Expand Down
2 changes: 1 addition & 1 deletion src/libbio/bgetrune.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Bgetrune(Biobuf *bp)
{
int c, i;
Rune rune;
char str[4];
char str[UTFmax];

c = Bgetc(bp);
if(c < Runeself) { /* one char */
Expand Down
2 changes: 1 addition & 1 deletion src/libbio/bputrune.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ int
Bputrune(Biobuf *bp, long c)
{
Rune rune;
char str[4];
char str[UTFmax];
int n;

rune = c;
Expand Down

0 comments on commit 04a77ac

Please sign in to comment.