#define DEFPACLEN 128
#define MAXPACLEN 236
+#define MAXCALLSIGN 9
#define DBUF 1
#define DMSG 2
myregex_t iscallreg[] = { /* regexes to determine whether this is a reasonable callsign */
{
- "^[A-Z]+[0-9]+[A-Z]+", 0
+ "^[A-Z]+[0-9]+[A-Z]+[1-9]?$", 0 /* G1TLH G1TLH1 */
},
{
- "^[0-9]+[A-Z]+[0-9]+[A-Z]+", 0
+ "^[0-9]+[A-Z]+[0-9]+[A-Z]+[1-9]?$", 0 /* 2E0AAA 2E0AAA1 */
+ },
+ {
+ "^[A-Z]+[0-9]+[A-Z]+-[1-9]$", 0 /* G1TLH-2 */
+ },
+ {
+ "^[0-9]+[A-Z]+[0-9]+[A-Z]+-[1-9]$", 0 /* 2E0AAA-2 */
+ },
+ {
+ "^[A-Z]+[0-9]+[A-Z]+-1[0-5]$", 0 /* G1TLH-11 */
+ },
+ {
+ "^[0-9]+[A-Z]+[0-9]+[A-Z]+-1[0-5]$", 0 /* 2E0AAA-11 */
},
{
0, 0
int iscallsign(char *s)
{
myregex_t *rp;
+
+ if (strlen(s) > MAXCALLSIGN)
+ return 0;
+
for (rp = iscallreg; rp->in; ++rp) {
if (regexec(rp->regex, s, 0, 0, 0) == 0)
return 1;
f->obuf = mp = cmsg_new(paclen+1, f->sort, f);
}
+ /* remove trailing spaces */
+ while (l > 0 &&isspace(s[l-1]))
+ --l;
+
for (p = s; p < s+l; ) {
if (mp->inp >= mp->data + paclen) {
flush_text(f);
}
buf[r] = 0;
call = strupper(buf);
- if (!iscallsign(call)) {
- die("Sorry, %s isn't a valid callsign", buf);
- }
+ }
+
+ /* check the callsign */
+ if (!iscallsign(call)) {
+ die("Sorry, %s isn't a valid callsign", call);
}
/* connect up stdin */