コード例 #1
0
ファイル: dualv6.c プロジェクト: r-mite/ifv6
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;
}
コード例 #2
0
ファイル: checkindecl.c プロジェクト: HCMID/morpheus
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);
}
コード例 #3
0
ファイル: macro.c プロジェクト: 8l/FUZIX
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;
}