github.com/hbdrawn/golang@v0.0.0-20141214014649-6b835209aba2/src/lib9/fmt/fmtnull.c (about) 1 /* 2 * The authors of this software are Rob Pike and Ken Thompson, 3 * with contributions from Mike Burrows and Sean Dorward. 4 * 5 * Copyright (c) 2002-2006 by Lucent Technologies. 6 * Portions Copyright (c) 2004 Google Inc. 7 * 8 * Permission to use, copy, modify, and distribute this software for any 9 * purpose without fee is hereby granted, provided that this entire notice 10 * is included in all copies of any software which is or includes a copy 11 * or modification of this software and in all copies of the supporting 12 * documentation for such software. 13 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED 14 * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES 15 * NOR GOOGLE INC MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING 16 * THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. 17 */ 18 19 #include <u.h> 20 #include <libc.h> 21 #include "fmtdef.h" 22 23 /* 24 * Absorb output without using resources. 25 */ 26 static Rune nullbuf[32]; 27 28 static int 29 __fmtnullflush(Fmt *f) 30 { 31 f->to = nullbuf; 32 f->nfmt = 0; 33 return 0; 34 } 35 36 int 37 fmtnullinit(Fmt *f) 38 { 39 memset(f, 0, sizeof *f); 40 f->runes = 1; 41 f->start = nullbuf; 42 f->to = nullbuf; 43 f->stop = nullbuf+nelem(nullbuf); 44 f->flush = __fmtnullflush; 45 fmtlocaleinit(f, nil, nil, nil); 46 return 0; 47 } 48