コード例 #1
0
ファイル: list8.c プロジェクト: 8l/go
static int
Aconv(Fmt *fp)
{
	int i;

	i = va_arg(fp->args, int);
	return fmtstrcpy(fp, anames8[i]);
}
コード例 #2
0
ファイル: list.c プロジェクト: Nurb432/plan9front
int
Aconv(Fmt *fp)
{
	int r;

	r = va_arg(fp->args, int);
	return fmtstrcpy(fp, anames[r]);
}
コード例 #3
0
ファイル: errfmt.c プロジェクト: 99years/plan9
int
__errfmt(Fmt *f)
{
	char *s;

	s = strerror(errno);
	return fmtstrcpy(f, s);
}
コード例 #4
0
ファイル: dofmt.c プロジェクト: Ahmah2009/golang
/* fmt out a null terminated utf string */
int
__strfmt(Fmt *f)
{
	char *s;

	s = va_arg(f->args, char *);
	return fmtstrcpy(f, s);
}
コード例 #5
0
ファイル: fcallfmt.c プロジェクト: 99years/plan9
int
dirfmt(Fmt *fmt)
{
	char buf[160];

	fdirconv(buf, buf+sizeof buf, va_arg(fmt->args, Dir*));
	return fmtstrcpy(fmt, buf);
}
コード例 #6
0
ファイル: initdisplay.c プロジェクト: GregBowyer/wmii
static int
Wfmt(Fmt *f) {
	Window *w;

	w = va_arg(f->args, Window*);
	if(w == nil)
		return fmtstrcpy(f, "<nil>");
	return fmtprint(f, "0x%ulx", w->xid);
}
コード例 #7
0
ファイル: devaoe.c プロジェクト: Earnestly/plan9
static int
fmtæ(Fmt *f)
{
	char buf[16];
	Aoedev *d;

	d = va_arg(f->args, Aoedev*);
	snprint(buf, sizeof buf, "aoe%d.%d", d->major, d->minor);
	return fmtstrcpy(f, buf);
}
コード例 #8
0
ファイル: lex.c プロジェクト: BGCX261/znos-git
int
iconv(Fmt *f)
{
	Inst *i;
	char buf[128];

	i = va_arg(f->args, Inst*);
	if(i == nil)
		return fmtstrcpy(f, "IZ");

	switch(keywds[i->op].terminal) {
	case TOKI0:
		sprint(buf, "%s", keywds[i->op].name);
		break;
	case TOKI1:
		sprint(buf, "%s\t%a", keywds[i->op].name, i->dst);
		break;
	case TOKI3:
		if(i->reg != 0) {
			char *pre = "";
			char *post = "";
			switch(i->reg->mode) {
			case AXIMM:
				pre = "$";
				break;
			case AXINF:
				post = "(fp)";
				break;
			case AXINM:
				post = "(mp)";
			 	break;
			}
			sprint(buf, "%s\t%a, %s%ld%s, %a", keywds[i->op].name, i->src, pre, i->reg->val, post, i->dst);
			break;
		}
	case TOKI2:
		sprint(buf, "%s\t%a, %a", keywds[i->op].name, i->src, i->dst);
		break;
	}

	return fmtstrcpy(f, buf);
}
コード例 #9
0
ファイル: fixarenas.c プロジェクト: 00001/plan9port
/*
 * Format time like ctime without newline.
 */
static int
tfmt(Fmt *fmt)
{
	uint t;
	char buf[30];
	
	t = va_arg(fmt->args, uint);
	strcpy(buf, ctime(t));
	buf[28] = 0;
	return fmtstrcpy(fmt, buf);
}
コード例 #10
0
ファイル: sub.c プロジェクト: carriercomm/plan9-gpl
int
Gfmt(Fmt *f1)
{
	int t;

	t = va_arg(f1->args, int);
	if(t >= 0 && t < MAXTAG)
		return fmtstrcpy(f1, tagnames[t]);
	else
		return fmtprint(f1, "<badtag %d>", t);
}
コード例 #11
0
ファイル: list.c プロジェクト: AustenConrad/plan-9
int
Aconv(Fmt *fp)
{
	char *s;
	int a;

	a = va_arg(fp->args, int);
	s = "???";
	if(a >= AXXX && a < ALAST)
		s = anames[a];
	return fmtstrcpy(fp, s);
}
コード例 #12
0
ファイル: md5sum.c プロジェクト: 99years/plan9
static int
digestfmt(Fmt *fmt)
{
	char buf[MD5dlen*2+1];
	uchar *p;
	int i;

	p = va_arg(fmt->args, uchar*);
	for(i=0; i<MD5dlen; i++)
		sprint(buf+2*i, "%.2ux", p[i]);
	return fmtstrcpy(fmt, buf);
}
コード例 #13
0
ファイル: list.c プロジェクト: Nurb432/plan9front
int
Pconv(Fmt *fp)
{
	char str[STRINGSZ];
	Prog *p;

	p = va_arg(fp->args, Prog*);
	snprint(str, sizeof str, "	%A	%D,%D", p->as, &p->from, &p->to);
	if(p->from.field)
		return fmtprint(fp, "%s,%d,%d", str, p->to.field, p->from.field);
	return fmtstrcpy(fp, str);
}
コード例 #14
0
ファイル: list.c プロジェクト: AustenConrad/plan-9
int
Rconv(Fmt *fp)
{
	char *s;
	int a;

	a = va_arg(fp->args, int);
	s = "C_??";
	if(a >= C_NONE && a <= C_NCLASS)
		s = cnames[a];
	return fmtstrcpy(fp, s);
}
コード例 #15
0
ファイル: sub.c プロジェクト: npe9/harvey
static int
Gfmt(Fmt* fmt)
{
	int t;
	char *s;

	t = va_arg(fmt->args, int);
	s = "<badtag>";
	if(t >= 0 && t < MAXTAG)
		s = tagnames[t];
	return fmtstrcpy(fmt, s);
}
コード例 #16
0
ファイル: fold.c プロジェクト: aiju/hdl
static int
binput(Fmt *f, Const *c)
{
	mpint *n, *x;
	int rc, i, j, k;
	mpdigit p, q;

	n = mpcopy(c->n);
	x = mpcopy(c->x);
	j = mpsignif(n);
	k = mpsignif(x);
	i = j > k ? j : k;
	if(x->sign == -1){
		mptrunc(n, ++i, n);
		mptrunc(x, i, x);
	}else if(k >= j)
		i++;
	if(n->sign == -1)
		return fmtstrcpy(f, "(invalid)");
	if(i == 0)
		i = 1;
	j = (i + 31) / (sizeof(mpdigit) * 8);
	i = (i + sizeof(mpdigit) * 8 - 1) % (sizeof(mpdigit) * 8) + 1;
	rc = fmtstrcpy(f, "'b");
	while(--j >= 0){
		p = j >= n->top ? 0 : n->p[j];
		q = j >= x->top ? 0 : x->p[j];
		while(--i >= 0){
			k = (mpdigit)1<<i;
			rc += fmtstrcpy(f, (q & k) != 0 ?
				((p & k) != 0 ? "z" : "x") :
				((p & k) != 0 ? "1" : "0"));
		}
		i = sizeof(mpdigit) * 8;
	}
	mpfree(n);
	mpfree(x);
	return rc;
}
コード例 #17
0
ファイル: util.c プロジェクト: AustenConrad/plan-9
int
placeconv(Fmt *fp)
{
	char str[256];
	int n;
	Place pl;

	pl = va_arg(fp->args, Place);
	n = 0;
	n += printlatlon(str+n, sizeof(str)-n, pl.lat, 'N', 'S');
	n += snprint(str+n, sizeof(str)-n, ", ");
	printlatlon(str+n, sizeof(str)-n, pl.lon, 'E', 'W');
	return fmtstrcpy(fp, str);
}
コード例 #18
0
ファイル: devip.c プロジェクト: AustenConrad/plan-9
int
eipfmt(Fmt *f)
{
	char buf[5*8];
	static char *efmt = "%.2lux%.2lux%.2lux%.2lux%.2lux%.2lux";
	static char *ifmt = "%d.%d.%d.%d";
	uchar *p, ip[16];
	ulong ul;

	switch(f->r) {
	case 'E':		/* Ethernet address */
		p = va_arg(f->args, uchar*);
		snprint(buf, sizeof buf, efmt, p[0], p[1], p[2], p[3], p[4], p[5]);
		return fmtstrcpy(f, buf);

	case 'I':
		ul = va_arg(f->args, ulong);
		hnputl(ip, ul);
		snprint(buf, sizeof buf, ifmt, ip[0], ip[1], ip[2], ip[3]);
		return fmtstrcpy(f, buf);
	}
	return fmtstrcpy(f, "(eipfmt)");
}
コード例 #19
0
ファイル: list.c プロジェクト: JamesLinus/LiteBSD-Ports
int
Rconv(Fmt *fp)
{
	char str[20];
	int r;

	r = va_arg(fp->args, int);
	if(r >= D_AL && r <= D_NONE)
		snprint(str, sizeof(str), "%s", regstr[r-D_AL]);
	else
		snprint(str, sizeof(str), "gok(%d)", r);

	return fmtstrcpy(fp, str);
}
コード例 #20
0
ファイル: list8.c プロジェクト: 8l/go
static int
Rconv(Fmt *fp)
{
	char str[STRINGSZ];
	int r;

	r = va_arg(fp->args, int);
	if(r >= D_AL && r <= D_NONE)
		sprint(str, "%s", regstr[r-D_AL]);
	else
		sprint(str, "gok(%d)", r);

	return fmtstrcpy(fp, str);
}
コード例 #21
0
ファイル: lex.c プロジェクト: BGCX261/znos-git
int
aconv(Fmt *f)
{
	Addr *a;
	char buf[64];

	a = va_arg(f->args, Addr*);

	if(a == nil)
		return fmtstrcpy(f, "AZ");

	if(a->mode & AIND) {		
		switch(a->mode & ~AIND) {
		case AFP:
			sprint(buf, "%ld(%d(fp))", a->val, a->off);
			break;
		case AMP:
			sprint(buf, "%ld(%d(mp))", a->val, a->off);
			break;
		}
	}
	else {
		switch(a->mode) {
		case AFP:
			sprint(buf, "%ld(fp)", a->val);
			break;
		case AMP:
			sprint(buf, "%ld(mp)", a->val);
			break;
		case AIMM:
			sprint(buf, "$%ld", a->val);
			break;
		}
	}

	return fmtstrcpy(f, buf);
}
コード例 #22
0
ファイル: fixarenas.c プロジェクト: 00001/plan9port
/*
 * Format number in simplest way that is okay with unittoull.
 */
static int
zfmt(Fmt *fmt)
{
	vlong x;
	
	x = va_arg(fmt->args, vlong);
	if(x == 0)
		return fmtstrcpy(fmt, "0");
	if(x%G == 0)
		return fmtprint(fmt, "%lldG", x/G);
	if(x%M == 0)
		return fmtprint(fmt, "%lldM", x/M);
	if(x%K == 0)
		return fmtprint(fmt, "%lldK", x/K);
	return fmtprint(fmt, "%lld", x);
}
コード例 #23
0
ファイル: list.c プロジェクト: Nurb432/plan9front
int
Xconv(Fmt *fp)
{
	char str[20];
	Index x;
	int i, j;

	x = va_arg(fp->args, Index);
	str[0] = 0;
	i = x.o0 & D_MASK;
	if(i != D_NONE){
		j = x.o1;
		return fmtprint(fp, "(%R.%c*%c)", i, "WWWWLLLL"[j], "12481248"[j]);
	}
	return fmtstrcpy(fp, str);
}
コード例 #24
0
ファイル: mparith1.c プロジェクト: Rasender/Hello-ACS-560
int
Bconv(Fmt *fp)
{
	char buf[500], *p;
	Mpint *xval, q, r, ten, sixteen;
	int f, digit;

	xval = va_arg(fp->args, Mpint*);
	mpmovefixfix(&q, xval);
	f = 0;
	if(mptestfix(&q) < 0) {
		f = 1;
		mpnegfix(&q);
	}

	p = &buf[sizeof(buf)];
	*--p = 0;
	if(fp->flags & FmtSharp) {
		// Hexadecimal
		mpmovecfix(&sixteen, 16);
		for(;;) {
			mpdivmodfixfix(&q, &r, &q, &sixteen);
			digit = mpgetfix(&r);
			if(digit < 10)
				*--p = digit + '0';
			else
				*--p = digit - 10 + 'A';
			if(mptestfix(&q) <= 0)
				break;
		}
		*--p = 'x';
		*--p = '0';
	} else {
		// Decimal
		mpmovecfix(&ten, 10);
		for(;;) {
			mpdivmodfixfix(&q, &r, &q, &ten);
			*--p = mpgetfix(&r) + '0';
			if(mptestfix(&q) <= 0)
				break;
		}
	}
	if(f)
		*--p = '-';
	return fmtstrcpy(fp, p);
}
コード例 #25
0
ファイル: list.c プロジェクト: 0intro/plan9-mips
int
Sconv(Fmt *fp)
{
	int i, c;
	char str[STRINGSZ], *p, *a;

	a = va_arg(fp->args, char*);
	p = str;
	for(i=0; i<NSNAME; i++) {
		c = a[i] & 0xff;
		if(c >= 'a' && c <= 'z' ||
		   c >= 'A' && c <= 'Z' ||
		   c >= '0' && c <= '9' ||
		   c == ' ' || c == '%') {
			*p++ = c;
			continue;
		}
		*p++ = '\\';
		switch(c) {
		case 0:
			*p++ = 'z';
			continue;
		case '\\':
		case '"':
			*p++ = c;
			continue;
		case '\n':
			*p++ = 'n';
			continue;
		case '\t':
			*p++ = 't';
			continue;
		case '\r':
			*p++ = 'r';
			continue;
		case '\f':
			*p++ = 'f';
			continue;
		}
		*p++ = (c>>6) + '0';
		*p++ = ((c>>3) & 7) + '0';
		*p++ = (c & 7) + '0';
	}
	*p = 0;
	return fmtstrcpy(fp, str);
}
コード例 #26
0
ファイル: list.c プロジェクト: 8l/inferno
int
Pconv(Fmt *fp)
{
	char str[STRINGSZ], s[20];
	Prog *p;

	p = va_arg(fp->args, Prog*);
	bigP = p;
	sprint(str, "(%ld)	%A	%D,%D",
		p->line, p->as, &p->from, &p->to);
	if(p->from.field) {
		sprint(s, ",%d,%d", p->to.field, p->from.field);
		strcat(str, s);
	}
	bigP = P;
	return fmtstrcpy(fp, str);
}
コード例 #27
0
ファイル: lex.c プロジェクト: AustenConrad/plan-9
static int
Tconv(Fmt *f)
{
	Token*	t;
	int	i;
	int	tag;
	char*	srbra;
	Rune*	aname;
	Rune*	tname;
	Attr*	a;
	char	buf[BIGBUFSIZE];

	t = va_arg(f->args, Token*);
	if(t == nil)
		sprint(buf, "<null>");
	else {
		i = 0;
		if(dbglex > 1)
			i = snprint(buf, sizeof(buf), "[%d]", t->starti);
		tag = t->tag;
		if(tag == Data) {
			i += snprint(buf+i, sizeof(buf)-i-1, "'%S'", t->text);
		}
		else {
			srbra = "";
			if(tag >= RBRA) {
				tag -= RBRA;
				srbra = "/";
			}
			tname = tagnames[tag];
			if(tag == Notfound)
				tname = L"?";
			i += snprint(buf+i, sizeof(buf)-i-1, "<%s%S", srbra, tname);
			for(a = t->attr; a != nil; a = a->next) {
				aname = attrnames[a->attid];
				i += snprint(buf+i, sizeof(buf)-i-1, " %S", aname);
				if(a->value != nil)
					i += snprint(buf+i, sizeof(buf)-i-1, "=%S", a->value);
			}
			i += snprint(buf+i, sizeof(buf)-i-1, ">");
		}
		buf[i] = 0;
	}
	return fmtstrcpy(f, buf);
}
コード例 #28
0
ファイル: mparith1.c プロジェクト: hfeeki/go
int
Fconv(Fmt *fp)
{
	char buf[500];
	Mpflt *fvp, fv;
	double d;

	fvp = va_arg(fp->args, Mpflt*);
	if(fp->flags & FmtSharp) {
		// alternate form - decimal for error messages.
		// for well in range, convert to double and use print's %g
		if(-900 < fvp->exp && fvp->exp < 900) {
			d = mpgetflt(fvp);
			if(d >= 0 && (fp->flags & FmtSign))
				fmtprint(fp, "+");
			return fmtprint(fp, "%g", d);
		}
		// TODO(rsc): for well out of range, print
		// an approximation like 1.234e1000
	}

	if(sigfig(fvp) == 0) {
		snprint(buf, sizeof(buf), "0p+0");
		goto out;
	}
	fv = *fvp;

	while(fv.val.a[0] == 0) {
		mpshiftfix(&fv.val, -Mpscale);
		fv.exp += Mpscale;
	}
	while((fv.val.a[0]&1) == 0) {
		mpshiftfix(&fv.val, -1);
		fv.exp += 1;
	}

	if(fv.exp >= 0) {
		snprint(buf, sizeof(buf), "%#Bp+%d", &fv.val, fv.exp);
		goto out;
	}
	snprint(buf, sizeof(buf), "%#Bp-%d", &fv.val, -fv.exp);

out:
	return fmtstrcpy(fp, buf);
}
コード例 #29
0
ファイル: list.c プロジェクト: CoryXie/nix-os
int
Pconv(Fmt *fp)
{
	char str[STRINGSZ];
	Prog *p;

	p = va_arg(fp->args, Prog*);
	if(p->as == ADATA)
		snprint(str, sizeof(str), "	%A	%D/%d,%D",
			p->as, &p->from, p->from.scale, &p->to);
	else if(p->as == ATEXT)
		snprint(str, sizeof(str), "	%A	%D,%d,%D",
			p->as, &p->from, p->from.scale, &p->to);
	else
		snprint(str, sizeof(str), "	%A	%D,%D",
			p->as, &p->from, &p->to);
	return fmtstrcpy(fp, str);
}
コード例 #30
0
ファイル: list.c プロジェクト: icattlecoder/go
int
Yconv(Fmt *fp)
{
	int i, c;
	char str[STRINGSZ], *p, *a;

	a = va_arg(fp->args, char*);
	p = str;
	for(i=0; i<sconsize; i++) {
		c = a[i] & 0xff;
		if((c >= 'a' && c <= 'z') ||
		   (c >= 'A' && c <= 'Z') ||
		   (c >= '0' && c <= '9')) {
			*p++ = c;
			continue;
		}
		*p++ = '\\';
		switch(c) {
		default:
			if(c < 040 || c >= 0177)
				break;	/* not portable */
			p[-1] = c;
			continue;
		case 0:
			*p++ = 'z';
			continue;
		case '\\':
		case '"':
			*p++ = c;
			continue;
		case '\n':
			*p++ = 'n';
			continue;
		case '\t':
			*p++ = 't';
			continue;
		}
		*p++ = (c>>6) + '0';
		*p++ = ((c>>3) & 7) + '0';
		*p++ = (c & 7) + '0';
	}
	*p = 0;
	return fmtstrcpy(fp, str);
}