X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient.c;h=167ef647acacc5101cf152223117d25e9023f62c;hb=b06a8b34356732ab544f4bba0102c5793b34e3d9;hp=d2ed0c473ed01731063a2a689e8825c75c37fe68;hpb=961ba05a38ad079e1fe72de96a59b036b98c35d2;p=spider.git diff --git a/src/client.c b/src/client.c index d2ed0c47..167ef647 100644 --- a/src/client.c +++ b/src/client.c @@ -112,10 +112,10 @@ myregex_t iscallreg[] = { /* regexes to determine whether this is a reasonable "^[0-9]+[A-Z]+[0-9]+[A-Z]+[1-9]?$", 0 /* 2E0AAA 2E0AAA1 */ }, { - "^[A-Z]+[0-9]+[A-Z]+-[1-9]$", 0 /* G1TLH-2 */ + "^[A-Z]+[0-9]+[A-Z]+-[0-9]$", 0 /* G1TLH-2 */ }, { - "^[0-9]+[A-Z]+[0-9]+[A-Z]+-[1-9]$", 0 /* 2E0AAA-2 */ + "^[0-9]+[A-Z]+[0-9]+[A-Z]+-[0-9]$", 0 /* 2E0AAA-2 */ }, { "^[A-Z]+[0-9]+[A-Z]+-1[0-5]$", 0 /* G1TLH-11 */ @@ -300,6 +300,26 @@ void send_msg(fcb_t *f, char let, UC *s, int l) f->sp->flags |= SEL_OUTPUT; } +/* + * send a file out to the user + */ +void send_file(char *name) +{ + int i; + char buf[MAXPACLEN+1]; + + FILE *f = xopen("data", name, "r"); + if (f) { + while (fgets(buf, paclen, f)) { + i = strlen(buf); + if (i && buf[i-1] == '\n') + buf[--i] = 0; + send_text(in, buf, i, 1); + } + fclose(f); + } +} + /* * the callback (called by sel_run) that handles all the inputs and outputs */ @@ -593,6 +613,11 @@ void process_stdin() if (!iscallsign(call)) { die("Sorry, %s isn't a valid callsign", call); } + + /* strip off a '-0' at the end */ + i = strlen(call); + if (call[i-1] == '0' && call[i-2] == '-') + call[i-2] = 0; alarm(0); signal(SIGALRM, SIG_IGN); @@ -601,6 +626,7 @@ void process_stdin() send_msg(node, 'A', connsort, strlen(connsort)); chgstate(CONNECTED); + send_file("connected"); } cmsg_callback(mp, 0); @@ -852,34 +878,29 @@ main(int argc, char *argv[]) /* is this a login? */ if (eq(call, "LOGIN") || eq(call, "login")) { - - char buf[MAXPACLEN+1]; - int r, i; - FILE *f = xopen("data", "issue", "r"); - if (f) { - while (fgets(buf, paclen, f)) { - i = strlen(buf); - if (i && buf[i-1] == '\n') - buf[--i] = 0; - send_text(in, buf, i, 1); - } - fclose(f); - } + send_file("issue"); signal(SIGALRM, login_timeout); alarm(timeout); send_text(in, "login: ", 7, 0); chgstate(WAITLOGIN); } else { - + int i; + /* check the callsign against the regexes */ if (!iscallsign(call)) { die("Sorry, %s isn't a valid callsign", call); } + /* strip off a '-0' at the end */ + i = strlen(call); + if (call[i-1] == '0' && call[i-2] == '-') + call[i-2] = 0; + /* tell the cluster who I am */ send_msg(node, 'A', connsort, strlen(connsort)); chgstate(CONNECTED); + send_file("connected"); }