aboutsummaryrefslogtreecommitdiff
path: root/src/libfmt
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2003-09-30 19:05:50 +0000
committerrsc <devnull@localhost>2003-09-30 19:05:50 +0000
commit522b0689c340d26feeac360640bf7e2e0582353c (patch)
treeba3a550c28684be3b3997899528a110c4e9cd91a /src/libfmt
parent2df2758496b2ab508d349208449f04d85ae2eb2c (diff)
downloadplan9port-522b0689c340d26feeac360640bf7e2e0582353c.tar.gz
plan9port-522b0689c340d26feeac360640bf7e2e0582353c.tar.bz2
plan9port-522b0689c340d26feeac360640bf7e2e0582353c.zip
Reorg
Diffstat (limited to 'src/libfmt')
-rw-r--r--src/libfmt/Make.Darwin-PowerMacintosh6
-rw-r--r--src/libfmt/Make.FreeBSD-3867
-rw-r--r--src/libfmt/Make.HP-UX-90006
-rw-r--r--src/libfmt/Make.Linux-3867
-rw-r--r--src/libfmt/Make.NetBSD-3867
-rw-r--r--src/libfmt/Make.OSF1-alpha6
-rw-r--r--src/libfmt/Make.SunOS-sun4u2
-rw-r--r--src/libfmt/Make.SunOS-sun4u-cc6
-rw-r--r--src/libfmt/Make.SunOS-sun4u-gcc6
-rw-r--r--src/libfmt/Makefile88
-rw-r--r--src/libfmt/Makefile.MID63
-rw-r--r--src/libfmt/bundle.ports51
-rw-r--r--src/libfmt/fmt.h100
-rw-r--r--src/libfmt/fmtinstall.3346
-rw-r--r--src/libfmt/mkfile1
-rw-r--r--src/libfmt/rpm.spec34
16 files changed, 5 insertions, 731 deletions
diff --git a/src/libfmt/Make.Darwin-PowerMacintosh b/src/libfmt/Make.Darwin-PowerMacintosh
deleted file mode 100644
index 14b8d4e7..00000000
--- a/src/libfmt/Make.Darwin-PowerMacintosh
+++ /dev/null
@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O
diff --git a/src/libfmt/Make.FreeBSD-386 b/src/libfmt/Make.FreeBSD-386
deleted file mode 100644
index 9799dcbb..00000000
--- a/src/libfmt/Make.FreeBSD-386
+++ /dev/null
@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include -pg
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O
diff --git a/src/libfmt/Make.HP-UX-9000 b/src/libfmt/Make.HP-UX-9000
deleted file mode 100644
index edbdc111..00000000
--- a/src/libfmt/Make.HP-UX-9000
+++ /dev/null
@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O
diff --git a/src/libfmt/Make.Linux-386 b/src/libfmt/Make.Linux-386
deleted file mode 100644
index 20432828..00000000
--- a/src/libfmt/Make.Linux-386
+++ /dev/null
@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -DNEEDLL
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O
diff --git a/src/libfmt/Make.NetBSD-386 b/src/libfmt/Make.NetBSD-386
deleted file mode 100644
index 087ed3ab..00000000
--- a/src/libfmt/Make.NetBSD-386
+++ /dev/null
@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O
diff --git a/src/libfmt/Make.OSF1-alpha b/src/libfmt/Make.OSF1-alpha
deleted file mode 100644
index 3d45279b..00000000
--- a/src/libfmt/Make.OSF1-alpha
+++ /dev/null
@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O
diff --git a/src/libfmt/Make.SunOS-sun4u b/src/libfmt/Make.SunOS-sun4u
deleted file mode 100644
index c5fe67b8..00000000
--- a/src/libfmt/Make.SunOS-sun4u
+++ /dev/null
@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O
diff --git a/src/libfmt/Make.SunOS-sun4u-cc b/src/libfmt/Make.SunOS-sun4u-cc
deleted file mode 100644
index 829301de..00000000
--- a/src/libfmt/Make.SunOS-sun4u-cc
+++ /dev/null
@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O
diff --git a/src/libfmt/Make.SunOS-sun4u-gcc b/src/libfmt/Make.SunOS-sun4u-gcc
deleted file mode 100644
index 5c415948..00000000
--- a/src/libfmt/Make.SunOS-sun4u-gcc
+++ /dev/null
@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O
diff --git a/src/libfmt/Makefile b/src/libfmt/Makefile
index 4b8ff604..0b072191 100644
--- a/src/libfmt/Makefile
+++ b/src/libfmt/Makefile
@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libfmt.a
-VERSION=2.0
-PORTPLACE=devel/libfmt
-NAME=libfmt
NUM=\
charstod.$O\
@@ -64,71 +44,13 @@ OFILES=\
HFILES=\
fmtdef.h\
- fmt.h\
-
-all: $(LIB)
+ $(9SRC)/include/fmt.h\
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 print.3 $(PREFIX)/man/man3/print.3
- install -m 0644 fmtinstall.3 $(PREFIX)/man/man3/fmtinstall.3
- install -m 0644 fmt.h $(PREFIX)/include/fmt.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
+include $(9SRC)/Makesyslib
$(NAN).$O: nan.h
strtod.$O: nan.h
test: $(LIB) test.$O
- $(CC) -o test test.$O $(LIB) -L$(PREFIX)/lib -lutf
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+ $(CC) -o test test.$O $(LIB) -L$(9SRC)/lib -lutf
-.phony: all clean nuke install tgz rpm ports
diff --git a/src/libfmt/Makefile.MID b/src/libfmt/Makefile.MID
deleted file mode 100644
index 8302c281..00000000
--- a/src/libfmt/Makefile.MID
+++ /dev/null
@@ -1,63 +0,0 @@
-LIB=libfmt.a
-VERSION=2.0
-PORTPLACE=devel/libfmt
-NAME=libfmt
-
-NUM=\
- charstod.$O\
- pow10.$O\
-
-OFILES=\
- dofmt.$O\
- errfmt.$O\
- fltfmt.$O\
- fmt.$O\
- fmtfd.$O\
- fmtfdflush.$O\
- fmtlock.$O\
- fmtprint.$O\
- fmtquote.$O\
- fmtrune.$O\
- fmtstr.$O\
- fmtvprint.$O\
- fprint.$O\
- print.$O\
- runefmtstr.$O\
- runeseprint.$O\
- runesmprint.$O\
- runesnprint.$O\
- runesprint.$O\
- runevseprint.$O\
- runevsmprint.$O\
- runevsnprint.$O\
- seprint.$O\
- smprint.$O\
- snprint.$O\
- sprint.$O\
- strtod.$O\
- vfprint.$O\
- vseprint.$O\
- vsmprint.$O\
- vsnprint.$O\
- $(NUM)\
- $(NAN)\
-
-HFILES=\
- fmtdef.h\
- fmt.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 print.3 $(PREFIX)/man/man3/print.3
- install -m 0644 fmtinstall.3 $(PREFIX)/man/man3/fmtinstall.3
- install -m 0644 fmt.h $(PREFIX)/include/fmt.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-$(NAN).$O: nan.h
-strtod.$O: nan.h
-
-test: $(LIB) test.$O
- $(CC) -o test test.$O $(LIB) -L$(PREFIX)/lib -lutf
-
diff --git a/src/libfmt/bundle.ports b/src/libfmt/bundle.ports
deleted file mode 100644
index 9ecf6a24..00000000
--- a/src/libfmt/bundle.ports
+++ /dev/null
@@ -1,51 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: libfmt
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
-# $FreeBSD: ports/devel/libfmt/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
-
-PORTNAME= libfmt
-PORTVERSION= 2.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-DEPENDS= ${PORTSDIR}/devel/libutf
-
-MAN3= print.3 fmtinstall.3
-
-USE_REINPLACE=yes
-
-.include <bsd.port.pre.mk>
-
-post-patch:
- ${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
-
-.include <bsd.port.post.mk>
---- pkg-comment ---
-Extensible formatted print C library (printf with user-defined verbs)
---- pkg-descr ---
-Libfmt is a port of Plan 9's formatted print library.
-As a base it provides all the syntax of ANSI printf
-but adds the ability for client programs to install
-new print verbs. One such print verb (installed by
-default) is %r, which prints the system error string.
-Instead of perror("foo"), you can write fprint(2, "foo: %r\n").
-This is especially nice when you write verbs to format
-the data structures used by your particular program.
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/#libfmt
-http://plan9.bell-labs.com/magic/man2html/2/print
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-lib/libfmt.a
-include/fmt.h
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist.
diff --git a/src/libfmt/fmt.h b/src/libfmt/fmt.h
deleted file mode 100644
index c913e14a..00000000
--- a/src/libfmt/fmt.h
+++ /dev/null
@@ -1,100 +0,0 @@
-
-/*
- * The authors of this software are Rob Pike and Ken Thompson.
- * Copyright (c) 2002 by Lucent Technologies.
- * 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 MAKE ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- */
-
-#ifndef _FMTH_
-#define _FMTH_ 1
-
-#include <stdarg.h>
-
-#ifndef _UTFH_
-#include <utf.h>
-#endif
-
-typedef struct Fmt Fmt;
-struct Fmt{
- unsigned char runes; /* output buffer is runes or chars? */
- void *start; /* of buffer */
- void *to; /* current place in the buffer */
- void *stop; /* end of the buffer; overwritten if flush fails */
- int (*flush)(Fmt *); /* called when to == stop */
- 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 */
- int width;
- int prec;
- unsigned long flags;
-};
-
-enum{
- FmtWidth = 1,
- FmtLeft = FmtWidth << 1,
- FmtPrec = FmtLeft << 1,
- FmtSharp = FmtPrec << 1,
- FmtSpace = FmtSharp << 1,
- FmtSign = FmtSpace << 1,
- FmtZero = FmtSign << 1,
- FmtUnsigned = FmtZero << 1,
- FmtShort = FmtUnsigned << 1,
- FmtLong = FmtShort << 1,
- FmtVLong = FmtLong << 1,
- FmtComma = FmtVLong << 1,
- FmtByte = FmtComma << 1,
- FmtLDouble = FmtByte << 1,
-
- FmtFlag = FmtLDouble << 1
-};
-
-extern int print(char*, ...);
-extern char* seprint(char*, char*, char*, ...);
-extern char* vseprint(char*, char*, char*, va_list);
-extern int snprint(char*, int, char*, ...);
-extern int vsnprint(char*, int, char*, va_list);
-extern char* smprint(char*, ...);
-extern char* vsmprint(char*, va_list);
-extern int sprint(char*, char*, ...);
-extern int fprint(int, char*, ...);
-extern int vfprint(int, char*, va_list);
-
-extern int runesprint(Rune*, char*, ...);
-extern int runesnprint(Rune*, int, char*, ...);
-extern int runevsnprint(Rune*, int, char*, va_list);
-extern Rune* runeseprint(Rune*, Rune*, char*, ...);
-extern Rune* runevseprint(Rune*, Rune*, char*, va_list);
-extern Rune* runesmprint(char*, ...);
-extern Rune* runevsmprint(char*, va_list);
-
-extern int fmtfdinit(Fmt*, int, char*, int);
-extern int fmtfdflush(Fmt*);
-extern int fmtstrinit(Fmt*);
-extern char* fmtstrflush(Fmt*);
-extern int runefmtstrinit(Fmt*);
-
-extern int quotestrfmt(Fmt *f);
-extern void quotefmtinstall(void);
-extern int (*fmtdoquote)(int);
-
-
-extern int fmtinstall(int, int (*)(Fmt*));
-extern int dofmt(Fmt*, char*);
-extern int fmtprint(Fmt*, char*, ...);
-extern int fmtvprint(Fmt*, char*, va_list);
-extern int fmtrune(Fmt*, int);
-extern int fmtstrcpy(Fmt*, char*);
-
-extern double fmtstrtod(const char *, char **);
-extern double fmtcharstod(int(*)(void*), void*);
-
-#endif
diff --git a/src/libfmt/fmtinstall.3 b/src/libfmt/fmtinstall.3
deleted file mode 100644
index 2a0e55bf..00000000
--- a/src/libfmt/fmtinstall.3
+++ /dev/null
@@ -1,346 +0,0 @@
-.TH FMTINSTALL 3
-.de EX
-.nf
-.ft B
-..
-.de EE
-.fi
-.ft R
-..
-.SH NAME
-fmtinstall, dofmt, fmtprint, fmtvprint, fmtstrcpy, fmtfdinit, fmtfdflush, fmtstrinit, fmtstrflush \- support for user-defined print formats and output routines
-.SH SYNOPSIS
-.B #include <fmt.h>
-.PP
-.ft L
-.nf
-.ta \w' 'u +\w' 'u +\w' 'u +\w' 'u +\w' 'u
-typedef struct Fmt Fmt;
-struct Fmt{
- void *start; /* of buffer */
- void *to; /* current place in the buffer */
- void *stop; /* end of the buffer; overwritten if flush fails */
- int (*flush)(Fmt*); /* called when to == stop */
- void *farg; /* to make flush a closure */
- int nfmt; /* num chars formatted so far */
- va_list args; /* args passed to dofmt */
- int r; /* % format character */
- int width;
- int prec;
- unsigned long flags;
-};
-
-enum{
- FmtWidth = 1,
- FmtLeft = FmtWidth << 1,
- FmtPrec = FmtLeft << 1,
- FmtSharp = FmtPrec << 1,
- FmtSpace = FmtSharp << 1,
- FmtSign = FmtSpace << 1,
- FmtZero = FmtSign << 1,
- FmtUnsigned = FmtZero << 1,
- FmtShort = FmtUnsigned << 1,
- FmtLong = FmtShort << 1,
- FmtVLong = FmtLong << 1,
- FmtComma = FmtVLong << 1,
- FmtByte = FmtComma << 1,
- FmtLDouble = FmtByte << 1,
-
- FmtFlag = FmtLDouble << 1
-};
-.fi
-.PP
-.B
-.ta \w'\fLchar* 'u
-
-.PP
-.B
-int fmtfdinit(Fmt *f, int fd, char *buf, int nbuf);
-.PP
-.B
-int fmtfdflush(Fmt *f);
-.PP
-.B
-int fmtstrinit(Fmt *f);
-.PP
-.B
-char* fmtstrflush(Fmt *f);
-.PP
-.B
-int fmtinstall(int c, int (*fn)(Fmt*));
-.PP
-.B
-int dofmt(Fmt *f, char *fmt);
-.PP
-.B
-int fmtprint(Fmt *f, char *fmt, ...);
-.PP
-.B
-int fmtvprint(Fmt *f, char *fmt, va_list v);
-.PP
-.B
-int fmtrune(Fmt *f, int r);
-.PP
-.B
-int fmtstrcpy(Fmt *f, char *s);
-.SH DESCRIPTION
-The interface described here allows the construction of custom
-.IR print (3)
-verbs and output routines.
-In essence, they provide access to the workings of the formatted print code.
-.PP
-The
-.IR print (3)
-suite maintains its state with a data structure called
-.BR Fmt .
-A typical call to
-.IR print (3)
-or its relatives initializes a
-.B Fmt
-structure, passes it to subsidiary routines to process the output,
-and finishes by emitting any saved state recorded in the
-.BR Fmt .
-The details of the
-.B Fmt
-are unimportant to outside users, except insofar as the general
-design influences the interface.
-The
-.B Fmt
-records
-the verb being processed, its precision and width,
-and buffering parameters.
-Most important, it also records a
-.I flush
-routine that the library will call if a buffer overflows.
-When printing to a file descriptor, the flush routine will
-emit saved characters and reset the buffer; when printing
-to an allocated string, it will resize the string to receive more output.
-The flush routine is nil when printing to fixed-size buffers.
-User code need never provide a flush routine; this is done internally
-by the library.
-.SS Custom output routines
-To write a custom output routine, such as an error handler that
-formats and prints custom error messages, the output sequence can be run
-from outside the library using the routines described here.
-There are two main cases: output to an open file descriptor
-and output to a string.
-.PP
-To write to a file descriptor, call
-.I fmtfdinit
-to initialize the local
-.B Fmt
-structure
-.IR f ,
-giving the file descriptor
-.IR fd ,
-the buffer
-.IR buf ,
-and its size
-.IR nbuf .
-Then call
-.IR fmtprint
-or
-.IR fmtvprint
-to generate the output.
-These behave just like
-.B fprint
-(see
-.IR print (3))
-or
-.B vfprint
-except that the characters are buffered until
-.I fmtfdflush
-is called.
-A typical example of this sequence appears in the Examples section.
-.PP
-The same basic sequence applies when outputting to an allocated string:
-call
-.I fmtstrinit
-to initialize the
-.BR Fmt ,
-then call
-.I fmtprint
-and
-.I fmtvprint
-to generate the output.
-Finally,
-.I fmtstrflush
-will return the allocated string, which should be freed after use.
-Regardless of the output style or type,
-.I fmtprint
-or
-.I fmtvprint
-generates the characters.
-.SS Custom format verbs
-.I Fmtinstall
-is used to install custom verbs and flags labeled by character
-.IR c ,
-which may be any non-zero Unicode character.
-.I Fn
-should be declared as
-.IP
-.EX
-int fn(Fmt*)
-.EE
-.PP
-.IB Fp ->r
-is the flag or verb character to cause
-.I fn
-to be called.
-In
-.IR fn ,
-.IB fp ->width ,
-.IB fp ->prec
-are the width and precision, and
-.IB fp ->flags
-the decoded flags for the verb (see
-.IR print (3)
-for a description of these items).
-The standard flag values are:
-.B FmtSign
-.RB ( + ),
-.B FmtLeft
-.RB ( - ),
-.B FmtSpace
-.RB ( '\ ' ),
-.B FmtSharp
-.RB ( # ),
-.B FmtComma
-.RB ( , ),
-.B FmtLong
-.RB ( l ),
-.B FmtShort
-.RB ( h ),
-.B FmtByte
-.RB ( hh ),
-.B FmtUnsigned
-.RB ( u ),
-.B FmtLDouble
-.RB ( L ),
-and
-.B FmtVLong
-.RB ( ll ).
-The flag bits
-.B FmtWidth
-and
-.B FmtPrec
-identify whether a width and precision were specified.
-.PP
-.I Fn
-is passed a pointer to the
-.B Fmt
-structure recording the state of the output.
-If
-.IB fp ->r
-is a verb (rather than a flag),
-.I fn
-should use
-.B Fmt->args
-to fetch its argument from the list,
-then format it, and return zero.
-If
-.IB fp ->r
-is a flag,
-.I fn
-should return a negative value:
-the negation of one of the above flag values, or some otherwise unused power of two.
-All interpretation of
-.IB fp ->width\f1,
-.IB fp ->prec\f1,
-and
-.IB fp-> flags
-is left up to the conversion routine.
-.I Fmtinstall
-returns 0 if the installation succeeds, \-1 if it fails.
-.PP
-.IR Fmtprint
-and
-.IR fmtvprint
-may be called to
-help prepare output in custom conversion routines.
-However, these functions clear the width, precision, and flags.
-The function
-.I dofmt
-is the underlying formatter; it
-uses the existing contents of
-.B Fmt
-and should be called only by sophisticated conversion routines.
-All these routines return the number of characters
-produced.
-.PP
-Some internal functions may be useful to format primitive types.
-They honor the width, precision and flags as described in
-.IR print (3).
-.I Fmtrune
-formats a single character
-.BR r .
-.I Fmtstrcpy
-formats a string
-.BR s .
-All these routines return zero for successful execution.
-.SH EXAMPLES
-This function prints an error message with a variable
-number of arguments and then quits.
-Compared to the corresponding example in
-.IR print (3),
-this version uses a smaller buffer, will never truncate
-the output message, but might generate multiple
-.B write
-system calls to produce its output.
-.IP
-.EX
-.ta 6n +6n +6n +6n +6n +6n +6n +6n +6n
-
-void fatal(char *fmt, ...)
-{
- Fmt f;
- char buf[64];
- va_list arg;
-
- fmtfdinit(&f, 1, buf, sizeof buf);
- fmtprint(&f, "fatal: ");
- va_start(arg, fmt);
- fmtvprint(&f, fmt, arg);
- va_end(arg);
- fmtprint(&f, "\en");
- fmtfdflush(&f);
- exits("fatal error");
-}
-.EE
-.PP
-This example adds a verb to print complex numbers.
-.IP
-.EX
-typedef
-struct {
- double r, i;
-} Complex;
-
-int
-Xfmt(Fmt *f)
-{
- Complex c;
-
- c = va_arg(f->args, Complex);
- return fmtprint(f, "(%g,%g)", c.r, c.i);
-}
-
-main(...)
-{
- Complex x;
-
- x.r = 1.5;
- x.i = -2.3;
-
- fmtinstall('X', Xfmt);
- print("x = %X\en", x);
-}
-.EE
-.SH SEE ALSO
-.IR print (3)
-.SH HISTORY
-This formatted print library originally
-appeared as part of the Plan 9 C library.
-.SH BUGS
-The Plan 9 version supports Unicode strings and produces UTF output.
-This version assumes that characters are always represented by 1-byte values.
diff --git a/src/libfmt/mkfile b/src/libfmt/mkfile
deleted file mode 100644
index bb99a25a..00000000
--- a/src/libfmt/mkfile
+++ /dev/null
@@ -1 +0,0 @@
-<../libutf/mkfile
diff --git a/src/libfmt/rpm.spec b/src/libfmt/rpm.spec
deleted file mode 100644
index 2cd51484..00000000
--- a/src/libfmt/rpm.spec
+++ /dev/null
@@ -1,34 +0,0 @@
-Summary: Extensible formatted print library. (Printf with user-defined verbs.)
-Name: libfmt
-Version: 2.0
-Release: 1
-Group: Development/C
-Copyright: BSD-like
-Packager: Russ Cox <rsc@post.harvard.edu>
-Source: http://pdos.lcs.mit.edu/~rsc/software/libfmt-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#libfmt
-Requires: libutf
-
-%description
-Libfmt is a port of Plan 9's formatted print library.
-As a base it provides all the syntax of ANSI printf
-but adds the ability for client programs to install
-new print verbs. One such print verb (installed by
-default) is %r, which prints the system error string.
-Instead of perror("foo"), you can write fprint(2, "foo: %r\n").
-This is especially nice when you write verbs to format
-the data structures used by your particular program.
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/include/fmt.h
-/usr/local/lib/libfmt.a
-/usr/local/man/man3/print.3
-/usr/local/man/man3/fmtinstall.3