/* * Print current position to output file. */ void prtline(int nl) { struct iobuf *ob; if (Mflag) { if (dMflag) return; /* no output */ if (ifiles->lineno == 1 && (MMDflag == 0 || ifiles->idx != SYSINC)) { ob = bsheap(0, "%s: %s\n", Mfile, ifiles->fname); if (MPflag && strcmp((const char *)ifiles->fname, (char *)MPfile)) bsheap(ob, "%s:\n", ifiles->fname); write(1, ob->buf, ob->cptr); bufree(ob); } } else if (!Pflag) { skpows = 0; bsheap(&pb, "\n# %d \"%s\"", ifiles->lineno, ifiles->fname); if (ifiles->idx == SYSINC) strtobuf((usch *)" 3", &pb); if (nl) strtobuf((usch *)"\n", &pb); } }
/* * deal with comments when -C is active. * Save comments in expanded macros??? */ void Ccmnt2(struct iobuf *ob, int ch) { if (skpows) cntline(); if (ch == '/') { /* C++ comment */ putob(ob, ch); do { putob(ob, ch); } while ((ch = qcchar()) && ch != '\n'); unch(ch); } else if (ch == '*') { strtobuf((usch *)"/*", ob); for (;;) { ch = qcchar(); putob(ob, ch); if (ch == '*') { if ((ch = qcchar()) == '/') { putob(ob, ch); break; } else unch(ch); } else if (ch == '\n') { ifiles->lineno++; } } } }
static int exprline(void) { extern int nbufused; struct iobuf *ob, *rb; struct symtab *nl; int oCflag = Cflag; usch *dp; int c, d, ifdef; rb = getobuf(BNORMAL); nbufused--; Cflag = ifdef = 0; for (;;) { c = qcchar(); xloop: if (c == '\n') break; if (c == '.') { putob(rb, '.'); if ((spechr[c = qcchar()] & C_DIGIT) == 0) goto xloop; } if (ISDIGIT(c)) { c = fastnum(c, rb); goto xloop; } if (c == '\'' || c == '\"') { faststr(c, rb); continue; } if (c == 'L' || c == 'u' || c == 'U') { unch(d = qcchar()); if (d == '\'') /* discard wide designator */ continue; } if (ISID0(c)) { dp = readid(c); nl = lookup(dp, FIND); if (nl && nl->type == DEFLOC) { ifdef = 1; } else if (ifdef) { putob(rb, nl ? '1' : '0'); ifdef = 0; } else if (nl != NULL) { inexpr = 1; if ((ob = kfind(nl))) { ob->buf[ob->cptr] = 0; strtobuf(ob->buf, rb); bufree(ob); } else putob(rb, '0'); inexpr = 0; } else putob(rb, '0'); } else putob(rb, c); } rb->buf[rb->cptr] = 0; unch('\n'); yyinp = rb->buf; c = yyparse(); bufree(rb); nbufused++; Cflag = oCflag; return c; }
//========================================================================== bool LoggerContestLog::GJVsave( GJVParams &gp ) { const std::string nulc; // save the LoggerContestLog details to file_desc clearBuffer(); buffpt = 0; strtobuf( "0" ); // block number for LoggerContestLog block strtobuf( GJVVERSION ); strtobuf( band ); strtobuf( name ); strtobuf( mycall.fullCall ); strtobuf( myloc.loc ); strtobuf( location ); opyn( otherExchange ); opyn( false /*Country_mult && County_mult*/ ); //CC_mult opyn( locMult ); std::string temp = ( boost::format( "%d" ) % gp.count ).str(); // leave off the dummy entry! strtobuf( temp ); strtobuf( power ); strtobuf( nulc ); // strtobuf( mainOpNow ); strtobuf( nulc ); // strtobuf( secondOpNow ); strtobuf( mode ); opyn( true ); // RADIAL rings are DEAD opyn( isPostEntry() ); opyn( scoreMode.getValue() == PPQSO ); opyn( countryMult ); opyn( false /*County_mult*/ ); opyn( districtMult ); opyn( powerWatts ); opyn( false /*scoreMode == GSPECIAL*/ ); opyn( allowLoc8 ); opyn( !RSTField.getValue() ); opyn( !serialField.getValue() ); opyn( !locatorField.getValue() ); opyn( !QTHField.getValue() ); strtobuf(); // clear tail HANDLE fd = gp.fd; writeBlock( fd, 0 ); // note that each contact will be saved as entered return true; }
void opyn( bool b ) { strtobuf( b ? "Y" : "N" ); }
void strtobuf( const MinosItem<std::string> &str ) { strtobuf( str.getValue() ); }