本文整理汇总了C++中sfputc函数的典型用法代码示例。如果您正苦于以下问题:C++ sfputc函数的具体用法?C++ sfputc怎么用?C++ sfputc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了sfputc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: getrec
static char*
getrec(register Sfio_t* sp, register int delimiter, register int flags)
{
register int c;
register char* glob;
sfstrseek(sp, 0, SEEK_SET);
glob = ed.global;
while ((c = getchr()) != delimiter) {
if (c == '\n') {
ed.peekc = c;
break;
}
if (c == EOF) {
if (glob)
ed.peekc = (flags & REC_LINE) ? 0 : c;
else if (delimiter != '\n' || (flags & (REC_LINE|REC_SPLICE)))
error(2, "unexpected EOF");
else if (flags & REC_TEXT)
return 0;
break;
}
if (c == '\\' && ((c = getchr()) != delimiter || (flags & REC_SPLICE) && c != '\n') && c && !(flags & REC_IGNORE))
sfputc(sp, '\\');
if (!c)
error(1, "null character ignored");
else if (!(flags & REC_IGNORE))
sfputc(sp, c);
}
if (flags & REC_TERMINATE)
sfputc(sp, c);
if (!(glob = sfstruse(sp)))
error(ERROR_SYSTEM|3, "out of space");
return glob;
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:35,代码来源:ed.c
示例2: splice
static void
splice(void)
{
char* s;
int n;
if (ed.spend) {
if (!ed.spl && !(ed.spl = sfstropen()))
error(ERROR_SYSTEM|3, "cannot initialize splice buffer");
sfwrite(ed.spl, ed.spbeg, ed.spend - ed.spbeg);
ed.spend = 0;
sfputc(ed.spl, '\n');
while (s = sfgetr(sfstdin, '\n', 1)) {
if ((n = sfvalue(sfstdin) - 1) > 0 && s[n - 1] == '\r')
n--;
if (n > 0 && s[n - 1] == '\\') {
sfwrite(ed.spl, s, n - 1);
sfputc(ed.spl, '\n');
}
else {
sfwrite(ed.spl, s, n);
break;
}
}
if (!(s = sfstruse(ed.spl)))
error(ERROR_SYSTEM|3, "out of space");
ed.input = s + (ed.input - ed.spbeg);
}
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:29,代码来源:ed.c
示例3: coquote
void
coquote(register Sfio_t* sp, register const char* s, int type)
{
register int c;
if (type && (!state.type || !*state.type))
type = 0;
while (c = *s++)
{
sfputc(sp, c);
if (c == '\'')
{
sfputc(sp, '\\');
sfputc(sp, '\'');
sfputc(sp, '\'');
}
else if (type && c == '/' && *s == *state.type)
{
register const char* x = s;
register char* t = state.type;
while (*t && *t++ == *x) x++;
if (!*t && *x == '/')
{
s = x;
sfprintf(sp, "'$%s'", CO_ENV_TYPE);
}
}
}
}
开发者ID:nathanmkaya,项目名称:ksh-arch,代码行数:30,代码来源:coquote.c
示例4: p_arg
static_fn void p_arg(const struct argnod *arg, int endchar, int opts) {
int flag = -1;
do {
if (!arg->argnxt.ap) {
flag = endchar;
} else if (opts & PRE) { // case alternation lists in reverse order
p_arg(arg->argnxt.ap, '|', opts);
flag = endchar;
} else if (opts) {
flag = ' ';
}
const char *cp = arg->argval;
if (*cp == 0 && (arg->argflag & ARG_EXP) && arg->argchn.ap) {
int c = (arg->argflag & ARG_RAW) ? '>' : '<';
sfputc(outfile, c);
sfputc(outfile, '(');
p_tree((Shnode_t *)arg->argchn.ap, 0);
sfputc(outfile, ')');
} else if (*cp == 0 && opts == POST && arg->argchn.ap) { // compound assignment
struct fornod *fp = (struct fornod *)arg->argchn.ap;
sfprintf(outfile, "%s=(\n", fp->fornam);
sfnputc(outfile, '\t', ++level);
p_tree(fp->fortre, 0);
if (--level) sfnputc(outfile, '\t', level);
sfputc(outfile, ')');
} else if ((arg->argflag & ARG_RAW) && (cp[1] || (*cp != '[' && *cp != ']'))) {
cp = sh_fmtq(cp);
}
sfputr(outfile, cp, flag);
if (flag == '\n') begin_line = 1;
arg = arg->argnxt.ap;
} while ((opts & POST) && arg);
}
开发者ID:att,项目名称:ast,代码行数:34,代码来源:deparse.c
示例5: spaste
/*
* Handles paste -s, for file <in> to file <out> using delimiters <delim>
*/
static int spaste(Sfio_t *in,register Sfio_t* out,register const char *delim,int dsiz,int dlen,Delim_t* mp)
{
register const char *cp;
register int d=0;
if((cp = sfgetr(in,'\n',0)) && sfwrite(out,cp,sfvalue(in)-1) < 0)
return(-1);
while(cp=sfgetr(in, '\n',0))
{
if(dlen)
{
register int c;
if(d >= dlen)
d = 0;
if(mp)
sfwrite(out,mp[d].chr,mp[d].len);
else if(c=delim[d])
sfputc(out,c);
d++;
}
if(sfwrite(out,cp,sfvalue(in)-1) < 0)
return(-1);
}
sfputc(out,'\n');
return(0);
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:28,代码来源:paste.c
示例6: post
static int
post(Css_t* css, Cssdisc_t* disc, Connection_t* from, register Connection_t* to, int channel, const char* format, ...)
{
State_t* state = (State_t*)disc;
char* s;
ssize_t n;
Sfulong_t m;
va_list ap;
sfprintf(state->tmp, "%d", channel);
if (from)
sfprintf(state->tmp, ".%d", from->fp->fd);
sfputc(state->tmp, ' ');
va_start(ap, format);
sfvprintf(state->tmp, format, ap);
va_end(ap);
sfputc(state->tmp, '\n');
n = sfstrtell(state->tmp);
if (!(s = sfstruse(state->tmp)))
error(ERROR_SYSTEM|3, "out of space");
m = CHAN_MASK(channel);
state->logged = 0;
if (!to)
{
for (to = state->all; to; to = to->next)
if ((to->mask & m) && to != from)
note(css, to, state->log, s, n, 0, disc);
}
else if (to->mask & m)
note(css, to, state->log, s, n, 0, disc);
return 0;
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:32,代码来源:mbb.c
示例7: paste
static int paste(int nstream,Sfio_t* streams[],Sfio_t *out, register const char *delim, int dsiz, int dlen, Delim_t* mp)
{
register const char *cp;
register int d, n, i, z, more=1;
register Sfio_t *fp;
do
{
d = (dlen>0?0:-1);
for(n=more-1,more=0; n < nstream;)
{
if(fp=streams[n])
{
if(cp = sfgetr(fp,'\n',0))
{
if(n==0)
more = 1;
else if(!more) /* first stream with output */
{
if(dsiz == 1)
sfnputc(out, *delim, n);
else if(dlen>0)
{
for(d=n; d>dlen; d-=dlen)
sfwrite(out,delim,dsiz);
if(d)
{
if(mp)
for (i = z = 0; i < d; i++)
z += mp[i].len;
else
z = d;
sfwrite(out,delim,z);
}
}
more = n+1;
}
if(sfwrite(out,cp,sfvalue(fp)-((n+1)<nstream)) < 0)
return(-1);
}
else
streams[n] = 0;
}
if(++n<nstream && more && d>=0)
{
register int c;
if(d >= dlen)
d = 0;
if(mp)
sfwrite(out,mp[d].chr,mp[d].len);
else if(c=delim[d])
sfputc(out,c);
d++;
}
else if(n==nstream && !streams[n-1] && more)
sfputc(out,'\n');
}
} while(more);
return(0);
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:59,代码来源:paste.c
示例8: hist_cancel
//
// This routine will cause the previous command to be cancelled.
//
void hist_cancel(History_t *hp) {
int c;
if (!hp) return;
sfputc(hp->histfp, HIST_UNDO);
sfputc(hp->histfp, 0);
sfsync(hp->histfp);
hp->histcnt += 2;
c = hist_ind(hp, --hp->histind);
hp->histcmds[c] = hp->histcnt;
}
开发者ID:att,项目名称:ast,代码行数:13,代码来源:history.c
示例9: cc_options
static int
cc_options(Codexmeth_t* meth, Sfio_t* sp)
{
register iconv_list_t* ic;
register const char* p;
register int c;
for (ic = iconv_list(NiL); ic; ic = iconv_list(ic))
{
sfputc(sp, '[');
sfputc(sp, '+');
sfputc(sp, '\b');
p = ic->match;
if (*p == '(')
p++;
while (c = *p++)
{
if (c == ')' && !*p)
break;
if (c == '?' || c == ']')
sfputc(sp, c);
sfputc(sp, c);
}
sfputc(sp, '?');
p = ic->desc;
while (c = *p++)
{
if (c == ']')
sfputc(sp, c);
sfputc(sp, c);
}
sfputc(sp, ']');
}
return 0;
}
开发者ID:nathanmkaya,项目名称:ksh-arch,代码行数:35,代码来源:code-iconv.c
示例10: pzheadprint
int
pzheadprint(register Pz_t* pz, register Sfio_t* op, int parts)
{
register Pzpart_t* pp;
char t;
if (pz->flags & PZ_FORCE)
sfprintf(op, "# fixed record input\n");
else
{
sfprintf(op, "# pzip %d.%d partition\n", pz->major, pz->minor);
if (pz->disc->comment)
sfprintf(op, "# %s\n", pz->disc->comment);
sfprintf(op, "# window %I*u\n", sizeof(pz->win), pz->win);
if (pz->prefix.count)
{
sfprintf(op, "\nprefix=%I*u", sizeof(pz->prefix.count), pz->prefix.count);
if (pz->prefix.terminator >= 0)
{
t = pz->prefix.terminator;
sfprintf(op, "*%s\n", fmtquote(&t, "'", "'", 1, FMT_ALWAYS));
}
else
sfputc(op, '\n');
}
if (pz->headoptions || pz->det)
{
sfputc(op, '\n');
if (pz->headoptions)
sfputr(op, pz->headoptions, '\n');
if (pz->det)
{
sfwrite(op, sfstrbase(pz->det), sfstrtell(pz->det));
sfputc(op, '\n');
}
}
}
if (parts)
{
pp = pz->partdict ? (Pzpart_t*)dtfirst(pz->partdict) : pz->part;
while (pp)
{
if (pzpartprint(pz, pp, op))
return -1;
if (!pz->partdict)
break;
pp = (Pzpart_t*)dtnext(pz->partdict, pp);
}
}
return sferror(op) ? -1 : 0;
}
开发者ID:nathanmkaya,项目名称:ksh-arch,代码行数:51,代码来源:pzhead.c
示例11: str_xor
static char*
str_xor(Expr_t* ex, register char* l, register char* r)
{
register int c;
register char* s = l;
while (c = *s++)
if (!strchr(r, c) && !strchr(s, c))
sfputc(ex->tmp, c);
while (c = *r++)
if (!strchr(l, c) && !strchr(r, c))
sfputc(ex->tmp, c);
return exstash(ex->tmp, ex->ve);
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:14,代码来源:exeval.c
示例12: huffputhdr
int huffputhdr(register Huff_t *hp,Sfio_t *outfile)
{
register int i, c;
register Sfio_t *fp = outfile;
/* output magic number */
sfputc(fp,HUFFMAG1);
sfputc(fp,HUFFMAG2);
if(sizeof(Sfoff_t)>4 && hp->insize >= ((Sfoff_t)1)<<(4*CHAR_BIT))
{
sfputc(fp,hp->insize>>(7*CHAR_BIT));
sfputc(fp,hp->insize>>(6*CHAR_BIT));
sfputc(fp,hp->insize>>(5*CHAR_BIT));
sfputc(fp,hp->insize>>(4*CHAR_BIT));
sfputc(fp,0);
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:15,代码来源:huffputhdr.c
示例13: tablewrite
static int
tablewrite(Dssfile_t* file, Dssrecord_t* record, Dssdisc_t* disc)
{
register Bgproute_t* rp = (Bgproute_t*)record->data;
switch (rp->attr & (BGP_best|BGP_damped|BGP_internal|BGP_suppressed|BGP_valid))
{
case BGP_best|BGP_valid:
case BGP_internal|BGP_valid:
break;
default:
return 0;
}
sfprintf(file->io, "%-16s ", fmtip4(rp->addr.v4, rp->bits));
if (rp->hop.v4 < 256)
sfprintf(file->io, "%-19u", rp->hop.v4);
else
sfprintf(file->io, "%-19s", fmtip4(rp->hop.v4, -1));
if (sfputc(file->io, '\n') == EOF)
{
if (disc->errorf)
(*disc->errorf)(NiL, disc, ERROR_SYSTEM|2, "write error");
return -1;
}
return 0;
}
开发者ID:nathanmkaya,项目名称:ksh-arch,代码行数:26,代码来源:bgp-table.c
示例14: MAIN
MAIN()
{
char buf[1024], *s;
Sfio_t* f;
f = sfnew(NIL(Sfio_t*),NIL(Void_t*),(size_t)SF_UNBOUND,-1,SF_WRITE|SF_STRING);
sfsetbuf(sfstdout,buf,sizeof(buf));
sfsetbuf(sfstderr,buf,sizeof(buf));
sfset(sfstdout,SF_SHARE,0);
sfset(sfstderr,SF_SHARE,0);
if(!sfpool(sfstdout,f,SF_SHARE) || !sfpool(sfstderr,f,SF_SHARE) )
terror("Pooling\n");
if(sfputr(sfstdout,"01234",-1) != 5)
terror("Writing to stderr\n");
if(sfputr(sfstderr,"56789",-1) != 5)
terror("Writing to stdout\n");
if(sfputc(f,'\0') < 0)
terror("Writing to string stream\n");
sfseek(f,(Sfoff_t)0,0);
if(!(s = sfreserve(f,SF_UNBOUND,1)) )
terror("Peeking\n");
sfwrite(f,s,0);
if(strcmp(s,"0123456789") != 0)
terror("Data is wrong\n");
TSTEXIT(0);
}
开发者ID:ChappedSky,项目名称:hancock,代码行数:31,代码来源:tshare.c
示例15: l_dirname
static void l_dirname(register Sfio_t *outfile, register const char *pathname)
{
register const char *last;
/* go to end of path */
for(last=pathname; *last; last++);
/* back over trailing '/' */
while(last>pathname && *--last=='/');
/* back over non-slash chars */
for(;last>pathname && *last!='/';last--);
if(last==pathname)
{
/* all '/' or "" */
if(*pathname!='/')
last = pathname = ".";
}
else
{
/* back over trailing '/' */
for(;*last=='/' && last > pathname; last--);
}
/* preserve // */
if(last!=pathname && pathname[0]=='/' && pathname[1]=='/')
{
while(pathname[2]=='/' && pathname<last)
pathname++;
if(last!=pathname && pathname[0]=='/' && pathname[1]=='/' && *astconf("PATH_LEADING_SLASHES",NiL,NiL)!='1')
pathname++;
}
sfwrite(outfile,pathname,last+1-pathname);
sfputc(outfile,'\n');
}
开发者ID:nathanmkaya,项目名称:ksh-arch,代码行数:31,代码来源:dirname.c
示例16: getpass
extern char* getpass(const char *prompt)
{
struct termios told,tnew;
Sfio_t *iop;
static char *cp, passwd[32];
void (*savesig)(int);
if(!(iop = sfopen((Sfio_t*)0, "/dev/tty", "r")))
return(0);
if(tcgetattr(sffileno(iop),&told) < 0)
return(0);
interrupt = 0;
tnew = told;
tnew.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL);
if(tcsetattr(sffileno(iop),TCSANOW,&tnew) < 0)
return(0);
savesig = signal(SIGINT, handler);
sfputr(sfstderr,prompt,-1);
if(cp = sfgetr(iop,'\n',1))
strncpy(passwd,cp,sizeof(passwd)-1);
tcsetattr(sffileno(iop),TCSANOW,&told);
sfputc(sfstderr,'\n');
sfclose(iop);
signal(SIGINT, savesig);
if(interrupt)
kill(getpid(),SIGINT);
return(cp?passwd:0);
}
开发者ID:nathanmkaya,项目名称:ksh-arch,代码行数:27,代码来源:getpass.c
示例17: init
static void
init(void)
{
register Sfio_t** ss;
register int c;
ed.interactive = -1;
ed.msg = sfstdout;
ed.all = BLOCK_LINE;
ed.page.size = BREAK_PAGE;
ed.redisc.re_version = REG_VERSION;
ed.redisc.re_errorf = errorf;
ed.re.re_disc = &ed.redisc;
ed.reflags = REG_DISCIPLINE|REG_DELIMITED;
if (!conformance(0, 0))
ed.reflags |= REG_LENIENT;
ed.verbose = 1;
for (c = 0; c < elementsof(signals); c++)
if (signal(signals[c], interrupt) == SIG_IGN)
signal(signals[c], SIG_IGN);
for (ss = (Sfio_t**)&ed.buffer; ss < (Sfio_t**)(((char*)&ed.buffer) + sizeof(ed.buffer)); ss++) {
if (!(*ss = sfstropen()))
error(ERROR_SYSTEM|3, "cannot initialize internal buffer");
sfputc(*ss, 0);
sfstrseek(*ss, 0, SEEK_SET);
}
sfputr(ed.buffer.help, "?", 0);
if (!(ed.zero = newof(NiL, Line_t, ed.all, 0)))
error(ERROR_SYSTEM|3, "out of space [zero]");
}
开发者ID:ISLEcode,项目名称:kornshell,代码行数:30,代码来源:ed.c
示例18: namebase
static void namebase(Sfio_t *outfile, register char *pathname, char *suffix)
{
register char *first, *last;
register int n=0;
for(first=last=pathname; *last; last++);
/* back over trailing '/' */
if(last>first)
while(*--last=='/' && last > first);
if(last==first && *last=='/')
{
/* all '/' or "" */
if(*first=='/')
if(*++last=='/') /* keep leading // */
last++;
}
else
{
for(first=last++;first>pathname && *first!='/';first--);
if(*first=='/')
first++;
/* check for trailing suffix */
if(suffix && (n=strlen(suffix)) && n<(last-first))
{
if(memcmp(last-n,suffix,n)==0)
last -=n;
}
}
if(last>first)
sfwrite(outfile,first,last-first);
sfputc(outfile,'\n');
}
开发者ID:alarcher,项目名称:illumos-gate,代码行数:31,代码来源:basename.c
示例19: MAIN
MAIN()
{
Sfio_t* f;
char buf[1024], *s;
int n;
#ifdef DEBUG
Sfio_t* logf = sfopen(0,"LOG","a"); sfsetbuf(logf,NIL(Void_t*),0);
#endif
alarm(10);
if(argc > 1)
{ /* coprocess only */
while((s = sfreserve(sfstdin,-1,0)) )
{
#ifdef DEBUG
sfwrite(logf, s, sfvalue(sfstdin));
#endif
sfwrite(sfstdout, s, sfvalue(sfstdin));
}
return 0;
}
/* make coprocess */
if(!(f = sfpopen(NIL(Sfio_t*), sfprints("%s -p",argv[0]), "r+")))
terror("Opening for read/write\n");
for(n = 0; n < 10; ++n)
{ sfsprintf(buf,sizeof(buf),"Line %d",n);
sfputr(f,buf,'\n');
if(!(s = sfgetr(f,'\n',1)))
terror("Did not read back line\n");
if(strcmp(s,buf) != 0)
terror("Input=%s, Expect=%s\n",s,buf);
}
if(sfputr(f,"123456789",'\n') != 10)
terror("Bad write");
if(sfread(f,buf,3) != 3)
terror("Did not get data back\n");
if(strncmp(s,"123",3) != 0)
terror("Wrong data\n");
if(sfwrite(f,"aaa",3) != 3 || sfputc(f,'\n') != '\n')
terror("Fail on write\n");
if(!(s = sfgetr(f,'\n',1)) )
terror("Should have gotten 456789\n");
if(strcmp(s,"456789") != 0)
terror("Wrong data2\n");
if(!(s = sfgetr(f,'\n',1)) )
terror("Should have gotten aaa\n");
if(strcmp(s,"aaa") != 0)
terror("Wrong data3\n");
sfclose(f);
TSTEXIT(0);
}
开发者ID:gwowen,项目名称:seismicunix,代码行数:59,代码来源:tpopenrw.c
示例20: while
/* toUpper:
* Convert characters to uppercase
*/
char *toUpper(Expr_t * pgm, char *s, Sfio_t* tmps)
{
int c;
while ((c = *s++))
sfputc (tmps, toupper (c));
return exstring(pgm, sfstruse(tmps));
}
开发者ID:ellert,项目名称:graphviz,代码行数:12,代码来源:actions.c
注:本文中的sfputc函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论