int client(const char *host, char *buf){ int sock; sock = tcpconnect(host, CPORT); if(sock < 0){ close(sock); return -1; } char conbuf[] = "pull\n"; write(sock, conbuf, strlen(conbuf)); int read_size; char rebuf[BUFLEN]; read_size = read_line(sock, rebuf); if(read_size != 0){ printf("mes: %s\n", rebuf); } subchar(buf, rebuf); printf("discon - NAT.\n"); close(sock); return 0; }
checkindecl(gk_word *Gkword) { int rval; int hits = 0; int nstems = 0; int i; int sawstems = 0; char *keys; char keybuf[LONGSTRING]; char workword[MAXWORDSIZE]; char * parsefield(); char stemkeys[LONGSTRING]; char tmpword[MAXWORDSIZE]; register char * sp; /* keybuf = (char *)malloc((size_t)LONGSTRING); workword = (char *)malloc((size_t)MAXWORDSIZE); */ if( (prntflags_of(Gkword) & VERBS_ONLY ) ) return(0); Xstrncpy(tmpword,workword_of(Gkword),MAXWORDSIZE); keys = keybuf; rval = chckindecl(tmpword,keys); /* printf("rval %d workword [%s] keys [%s]\n", rval, workword, keys ); */ if( ! rval ) { goto finish; } while(*keys) { sp = keys; /* sp = parsefield(sp,tmpword,':'); */ sp = parsefield(sp,workword,':',MAXWORDSIZE); if( ! workword[0] ) Xstrncpy(workword,tmpword,MAXWORDSIZE); /* if( tmpword[0] ) set_workword(Gkword,tmpword); */ sp = parsefield(sp,lemma_of(Gkword),':',MAXWORDSIZE); sp = parsefield(sp,stemkeys,' ',LONGSTRING); subchar(stemkeys,':',' '); /* Xstrncpy(workword,workword_of(Gkword),MAXWORDSIZE); */ set_stem(Gkword,workword ); hits += IndeclWorks(Gkword,stemkeys); while(*keys && ! isspace(*keys) ) keys++; while(isspace(*keys)) keys++; } finish: /* xFree(keybuf,"keybuf"); xFree(workword,"workword"); keybuf = workword = NULL; */ return(hits); }
static int getch(char endch) { register char d; retry: d = readc(); if (!subchar(d)) return (d); if (d == DOLLAR) { register int c; if ((c = readc(), dolchar(c))) { NAMPTR n = (NAMPTR) NIL; int dolg = 0; BOOL bra; register const char *argp; register const char *v; CHAR idb[2]; char *id = idb; if (bra = (c == BRACE)) c = readc(); if (letter(c)) { argp = (STRING) relstak(); while (alphanum(c)) { pushstak(c); c = readc(); } zerostak(); n = lookup(absstak(argp)); setstak(argp); v = n->namval; id = (char *)n->namid; peekc = c | MARK;; } else if (digchar(c)) { *id = c; idb[1] = 0; if (astchar(c)) { dolg = 1; c = '1'; } c -= '0'; v = ((c == 0) ? (const char *)cmdadr : (c <= dolc) ? dolv[c] : (dolg = 0, NULL)); } else if (c == '$') { v = pidadr; } else if (c == '!') { v = pcsadr; } else if (c == '#') { v = dolladr; } else if (c == '?') { v = exitadr; } else if (c == '-') { v = flagadr; } else if (bra) { error(badsub); } else { goto retry; } c = readc(); if (!defchar(c) && bra) error(badsub); argp = 0; if (bra) { if (c != '}') { argp = (STRING) relstak(); if ((v == 0) ^ (setchar(c))) copyto('}'); else skipto('}'); argp = absstak(argp); } } else { peekc = c | MARK; c = 0; } if (v) { if (c != '+') { for (;;) { while (c = *v++) pushstak(c | quote); if (dolg == 0 || (++dolg > dolc)) break; else { v = dolv[dolg]; pushstak(SP | (*id == '*' ? quote : 0)); } } } } else if (argp) { if (c == '?') { failed(id, *argp ? argp : badparam); } else if (c == '=') { if (n) assign(n, argp); else error(badsub); } } else if (flags & setflg) { failed(id, badparam); } goto retry; } else { peekc = c | MARK; } } else if (d == endch) { return (d); } else if (d == SQUOTE) { comsubst(); goto retry; } else if (d == DQUOTE) { quoted++; quote ^= QUOTE; goto retry; } return d; }