diff options
author | Wijnand Modderman-Lenstra | 2015-06-15 16:54:49 +0200 |
---|---|---|
committer | Wijnand Modderman-Lenstra | 2015-06-15 16:54:49 +0200 |
commit | a35276524e7eb24ac392cea8e5dd008b284c1259 (patch) | |
tree | 086733389a3cf04d7ef867b784495c4fbd0031d3 | |
download | aur-a35276524e7eb24ac392cea8e5dd008b284c1259.tar.gz |
Migrated package
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 29 | ||||
-rw-r--r-- | node.patch | 503 |
3 files changed, 549 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..b11a37bcd532 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,17 @@ +pkgbase = node + pkgdesc = AX25 node software + pkgver = 0.3.2 + pkgrel = 2 + url = http://tldp.org/HOWTO/AX25-HOWTO/x1688.html + arch = i686 + arch = x86_64 + license = GPL + optdepends = ax25-tools: hamradio modem support + optdepends = soundmodem: software packet radio modem + source = http://ftp.de.debian.org/debian/pool/main/n/node/node_0.3.2.orig.tar.gz + source = node.patch + md5sums = e458f3d8d75fd364f7841a296e0a4eae + md5sums = a05aeae5c98fa47e30de494809c00a3b + +pkgname = node + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..80ae42162de9 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,29 @@ +# Maintaner: Wijnand Modderman-Lenstra <maze@pyth0n.org> +# Contributor: Gordon JC Pearce <gordon@gjcp.net> +pkgname=node +pkgver=0.3.2 +pkgrel=2 +pkgdesc="AX25 node software" +arch=(i686 x86_64) +url="http://tldp.org/HOWTO/AX25-HOWTO/x1688.html" +license=('GPL') +optdepends=('ax25-tools: hamradio modem support' + 'soundmodem: software packet radio modem') +source=( + http://ftp.de.debian.org/debian/pool/main/n/node/node_0.3.2.orig.tar.gz + node.patch +) +md5sums=('e458f3d8d75fd364f7841a296e0a4eae' + 'a05aeae5c98fa47e30de494809c00a3b') + +build() { + cd "$srcdir/$pkgname-$pkgver" + patch -p0 < $srcdir/node.patch + ./configure + make || return 1 +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir/" install +} diff --git a/node.patch b/node.patch new file mode 100644 index 000000000000..0eba23a40819 --- /dev/null +++ b/node.patch @@ -0,0 +1,503 @@ +diff --git Makefile Makefile +index 6ee183a..23ef317 100644 +--- Makefile ++++ Makefile +@@ -1,5 +1,6 @@ + all: nodeusers node + ++ + CC = gcc + LD = gcc + CFLAGS = -Wall -Wstrict-prototypes -O2 -g +@@ -20,31 +21,31 @@ NODEUSERS_OBJS = $(NODEUSERS_SRC:.c=.o) + .c.o: + $(CC) $(CFLAGS) -c $< + +-install: installbin installman installhelp +- install -m 755 -o root -g root -d $(VAR_DIR)/node +- install -m 644 -o root -g root etc/loggedin $(VAR_DIR)/node ++install: installbin installman installhelp installconf ++ install -m 755 -D -o root -g root -d $(VAR_DIR)/node ++ install -m 644 -D -o root -g root etc/loggedin $(VAR_DIR)/node + @rm -f /usr/bin/node + @rm -f /usr/bin/nodeusers + + installbin: all +- install -m 4755 -s -o root -g root node $(SBIN_DIR) +- install -m 755 -s -o root -g root nodeusers $(SBIN_DIR) ++ install -m 4755 -D -s -o root -g root node $(SBIN_DIR)/node ++ install -m 755 -D -s -o root -g root nodeusers $(SBIN_DIR)/nodeusers + + installhelp: +- install -m 755 -o root -g root -d $(LIB_DIR)/ax25/node/help +- install -m 644 -o root -g root etc/help/*.hlp $(LIB_DIR)/ax25/node/help ++ install -m 755 -D -o root -g root -d $(LIB_DIR)/ax25/node/help ++ install -m 644 -D -o root -g root etc/help/*.hlp $(LIB_DIR)/ax25/node/help + + installconf: installhelp +- install -m 755 -o root -g root -d $(ETC_DIR) +- install -m 600 -o root -g root etc/node.conf $(ETC_DIR) +- install -m 600 -o root -g root etc/node.perms $(ETC_DIR) +- install -m 600 -o root -g root etc/node.motd $(ETC_DIR) ++ install -m 755 -D -o root -g root -d $(ETC_DIR) ++ install -m 600 -D -o root -g root etc/node.conf $(ETC_DIR) ++ install -m 600 -D -o root -g root etc/node.perms $(ETC_DIR) ++ install -m 600 -D -o root -g root etc/node.motd $(ETC_DIR) + + installman: +- install -m 644 -o bin -g bin man/nodeusers.1 $(MAN_DIR)/man1 +- install -m 644 -o bin -g bin man/node.conf.5 $(MAN_DIR)/man5 +- install -m 644 -o bin -g bin man/node.perms.5 $(MAN_DIR)/man5 +- install -m 644 -o bin -g bin man/node.8 $(MAN_DIR)/man8 ++ install -m 644 -D -o bin -g bin man/nodeusers.1 $(MAN_DIR)/man1 ++ install -m 644 -D -o bin -g bin man/node.conf.5 $(MAN_DIR)/man5 ++ install -m 644 -D -o bin -g bin man/node.perms.5 $(MAN_DIR)/man5 ++ install -m 644 -D -o bin -g bin man/node.8 $(MAN_DIR)/man8 + + clean: + rm -f *.o *~ *.bak *.orig +diff --git Makefile.include.in Makefile.include.in +index 547891f..ef5e061 100644 +--- Makefile.include.in ++++ Makefile.include.in +@@ -2,12 +2,12 @@ + ARCH = @ARCH@ + + # Paths +-ETC_DIR = @ETC_DIR@ +-SBIN_DIR = @SBIN_DIR@ +-BIN_DIR = @BIN_DIR@ +-LIB_DIR = @LIB_DIR@ +-MAN_DIR = @MAN_DIR@ +-VAR_DIR = @VAR_DIR@ ++ETC_DIR = $(DESTDIR)@ETC_DIR@ ++SBIN_DIR = $(DESTDIR)@SBIN_DIR@ ++BIN_DIR = $(DESTDIR)@BIN_DIR@ ++LIB_DIR = $(DESTDIR)@LIB_DIR@ ++MAN_DIR = $(DESTDIR)@MAN_DIR@ ++VAR_DIR = $(DESTDIR)@VAR_DIR@ + + # Is Zlib available? + ZLIB = @ZLIB@ +diff --git command.c command.c +index 1d6caaa..98de36a 100644 +--- command.c ++++ command.c +@@ -59,7 +59,7 @@ void logout(char *reason) + axio_end_all(); + logout_user(); + ipc_close(); +- log(L_LOGIN, "%s @ %s logged out: %s", User.call, User.ul_name, reason); ++ n_log(L_LOGIN, "%s @ %s logged out: %s", User.call, User.ul_name, reason); + free_cmdlist(Nodecmds); + Nodecmds = NULL; + exit(0); +diff --git config.c config.c +index 5111bd1..377b201 100644 +--- config.c ++++ config.c +@@ -110,7 +110,7 @@ char *read_perms(struct user *up, unsigned long peer) + continue; + if (argc != 5) { + node_msg("Configuration error"); +- log(L_ERROR, "Syntax error in permission file at line %d", n); ++ n_log(L_ERROR, "Syntax error in permission file at line %d", n); + break; + } + if (strcmp(argv[0], "*") && strcasecmp(argv[0], up->call)) +@@ -227,7 +227,7 @@ static int do_escapechar(int argc, char **argv) + EscChar = get_escape(argv[1]); + if (EscChar < -1 || EscChar > 255) { + node_msg("Configuration error"); +- log(L_ERROR, "do_escapechar: Invalid escape character %s", ++ n_log(L_ERROR, "do_escapechar: Invalid escape character %s", + argv[1]); + return -2; + } +@@ -304,7 +304,7 @@ static int do_hiddenports(int argc, char **argv) + for (i = 1; i < argc && i < 31; i++) { + if (ax25_config_get_dev(argv[i]) == NULL) { + node_msg("Configuration error"); +- log(L_ERROR, "do_hiddenports: invalid port %s", argv[i]); ++ n_log(L_ERROR, "do_hiddenports: invalid port %s", argv[i]); + return -2; + } + HiddenPorts[i - 1] = strdup(argv[i]); +@@ -339,7 +339,7 @@ static int do_extcmd(int argc, char **argv) + new->flags = atoi(argv[2]); + if ((pw = getpwnam(argv[3])) == NULL) { + node_msg("Configuration error"); +- log(L_ERROR, "do_extcmd: Unknown user %s", argv[3]); ++ n_log(L_ERROR, "do_extcmd: Unknown user %s", argv[3]); + return -2; + } + new->uid = pw->pw_uid; +@@ -409,7 +409,7 @@ int read_config(void) + ret = cmdparse(cfg_cmds, line); + if (ret == -1) { + node_msg("Configuration error"); +- log(L_ERROR, "Syntax error in config file at line %d: %s", n, line); ++ n_log(L_ERROR, "Syntax error in config file at line %d: %s", n, line); + } + if (ret < 0) { + fclose(fp); +diff --git configure configure +index 58704b0..52261f0 100755 +--- configure ++++ configure +@@ -47,25 +47,25 @@ fi + HAVENETROM="#undef" + HAVEROSE="#undef" + +- echo -n "Include support for the AX.25 protocol ? [Y/n]: "; read answer +- if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] +- then ++ #echo -n "Include support for the AX.25 protocol ? [Y/n]: "; read answer ++ #if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] ++ #then + HAVEAX25="#define" +- fi ++ #fi + # +- echo -n "Include support for the NetRom protocol ? [Y/n]: "; read answer +- if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] +- then +- HAVEAX25="#define" ++ #echo -n "Include support for the NetRom protocol ? [Y/n]: "; read answer ++ #if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] ++ #then ++ # HAVEAX25="#define" + HAVENETROM="#define" +- fi ++ #fi + # +- echo -n "Include support for the Rose protocol ? [Y/n]: "; read answer +- if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] +- then +- HAVEAX25="#define" ++ #echo -n "Include support for the Rose protocol ? [Y/n]: "; read answer ++ #if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] ++ #then ++ # HAVEAX25="#define" + HAVEROSE="#define" +- fi ++ #fi + + echo "Creating Makefile.include" + +diff --git gateway.c gateway.c +index 702bca9..ed37a93 100644 +--- gateway.c ++++ gateway.c +@@ -55,7 +55,8 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + } sa; + struct in_addr inaddr; + char call[10], path[20], *cp, *eol; +- int ret, retlen = sizeof(int); ++ int ret = sizeof(int); ++ socklen_t retlen; + int paclen; + struct hostent *hp; + struct servent *sp; +@@ -72,7 +73,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + case AF_ROSE: + if (check_perms(PERM_ROSE, 0L) == -1) { + node_msg("Permission denied"); +- log(L_GW, "Permission denied: rose"); ++ n_log(L_GW, "Permission denied: rose"); + return NULL; + } + if ((fd = socket(AF_ROSE, SOCK_SEQPACKET, 0)) < 0) { +@@ -124,7 +125,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + case AF_NETROM: + if (check_perms(PERM_NETROM, 0L) == -1) { + node_msg("Permission denied"); +- log(L_GW, "Permission denied: netrom"); ++ n_log(L_GW, "Permission denied: netrom"); + return NULL; + } + if ((fd = socket(AF_NETROM, SOCK_SEQPACKET, 0)) < 0) { +@@ -159,7 +160,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + case AF_AX25: + if (check_perms(PERM_AX25, 0L) == -1 || (is_hidden(addr[0]) && check_perms(PERM_HIDDEN, 0L) == -1)) { + node_msg("Permission denied"); +- log(L_GW, "Permission denied: ax.25 port %s", addr[0]); ++ n_log(L_GW, "Permission denied: ax.25 port %s", addr[0]); + return NULL; + } + if (ax25_config_get_addr(addr[0]) == NULL) { +@@ -241,7 +242,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + eol = INET_EOL; + if (check_perms(PERM_TELNET, sa.in.sin_addr.s_addr) == -1) { + node_msg("Permission denied"); +- log(L_GW, "Permission denied: telnet %s", print_dl(&User)); ++ n_log(L_GW, "Permission denied: telnet %s", print_dl(&User)); + close(fd); + return NULL; + } +@@ -310,7 +311,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + cp = strdup(strerror(ret)); + strlwr(cp); + node_msg_block("Failure with %s: %s", print_dl(&User), cp); +- log(L_GW, "Failure with %s: %s", print_dl(&User), cp); ++ n_log(L_GW, "Failure with %s: %s", print_dl(&User), cp); + free(cp); + close(fd); + return NULL; +@@ -339,7 +340,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) + escape < 32 ? (escape + 'A' - 1) : escape); + node_flush(NodeIo); + +- log(L_GW, "Connected to %s", print_dl(&User)); ++ n_log(L_GW, "Connected to %s", print_dl(&User)); + + if ((riop = axio_init(fd, fd, paclen, eol)) == NULL) { + node_perror("connect_to: Initializing I/O failed", errno); +@@ -536,7 +537,7 @@ int do_connect(int argc, char **argv) + + axio_end(riop); + +- log(L_GW, "Disconnected from %s", print_dl(&User)); ++ n_log(L_GW, "Disconnected from %s", print_dl(&User)); + + if (stay) { + axio_eolmode(NodeIo, EOLMODE_TEXT); +@@ -608,10 +609,10 @@ static long calc_rtt(struct timeval tv1, struct timeval tv2) + /* + * Checksum routine for Internet Protocol family headers (C Version) + */ +-static unsigned short in_cksum(unsigned char *addr, int len) ++static unsigned short in_cksum(char *addr, int len) + { + register int nleft = len; +- register unsigned char *w = addr; ++ register char *w = addr; + register unsigned int sum = 0; + unsigned short answer = 0; + +@@ -670,7 +671,7 @@ static int check_icmp(char *buf, int len, struct sockaddr_in *from, long rtt) + + int do_ping(int argc, char **argv) + { +- unsigned char buf[256]; ++ char buf[256]; + struct hostent *hp; + struct sockaddr_in to, from; + struct in_addr inaddr; +@@ -679,8 +680,8 @@ int do_ping(int argc, char **argv) + struct timeval tv1, tv2; + fd_set fdset; + int fd, i, len = sizeof(struct icmphdr); +- int salen = sizeof(struct sockaddr); +- ++ socklen_t salen; ++ + if (argc < 2) { + node_msg("Usage: ping <host> [<size>]"); + return 0; +diff --git ipc.c ipc.c +index 1c4f022..86609ee 100644 +--- ipc.c ++++ ipc.c +@@ -32,7 +32,7 @@ static void usr2_handler(int sig) + nprintf("\n%s %s\n", NodeId, buf.mtext); + node_flush(NodeIo); + } else +- log(L_ERROR, "usr2_handler: Caught SIGUSR2, but couldn't receive a message"); ++ n_log(L_ERROR, "usr2_handler: Caught SIGUSR2, but couldn't receive a message"); + + signal(SIGUSR2, usr2_handler); /* Restore handler */ + } +@@ -90,7 +90,7 @@ int ipc_close(void) + + if (ipc_id != -1) /* Remove the IPC channel */ + if (msgctl(ipc_id, IPC_RMID, &buf) == -1) { +- log(L_ERROR, "ipc_close: Could not remove IPC channel: %s", strerror(errno)); ++ n_log(L_ERROR, "ipc_close: Could not remove IPC channel: %s", strerror(errno)); + return -1; + } + return 0; +diff --git node.c node.c +index 0a7f5dd..81a1ccd 100644 +--- node.c ++++ node.c +@@ -90,7 +90,7 @@ int main(int argc, char *argv[]) + struct sockaddr_rose srose; + struct sockaddr_in sin; + } saddr; +- int slen = sizeof(saddr); ++ socklen_t slen = sizeof(saddr); + char *p, buf[256], *pw; + int paclen; + FILE *fp; +@@ -104,7 +104,7 @@ int main(int argc, char *argv[]) + signal(SIGPIPE, SIG_IGN); + + if (ax25_config_load_ports() == 0) { +- log(L_ERROR, "No AX.25 port data configured"); ++ n_log(L_ERROR, "No AX.25 port data configured"); + return 1; + } + nr_config_load_ports(); +@@ -112,7 +112,7 @@ int main(int argc, char *argv[]) + + if (getpeername(STDOUT_FILENO, (struct sockaddr *)&saddr, &slen) == -1) { + if (errno != ENOTSOCK) { +- log(L_ERROR, "getpeername: %s", strerror(errno)); ++ n_log(L_ERROR, "getpeername: %s", strerror(errno)); + return 1; + } + User.ul_type = AF_UNSPEC; +@@ -123,7 +123,7 @@ int main(int argc, char *argv[]) + case AF_AX25: + strcpy(User.call, ax25_ntoa(&saddr.sax.fsa_ax25.sax25_call)); + if (getsockname(STDOUT_FILENO, (struct sockaddr *)&saddr.sax, &slen) == -1) { +- log(L_ERROR, "getsockname: %s", strerror(errno)); ++ n_log(L_ERROR, "getsockname: %s", strerror(errno)); + return 1; + } + strcpy(User.ul_name, ax25_config_get_port(&saddr.sax.fsa_digipeater[0])); +@@ -134,7 +134,7 @@ int main(int argc, char *argv[]) + strcpy(User.call, ax25_ntoa(&saddr.sax.fsa_ax25.sax25_call)); + strcpy(User.ul_name, ax25_ntoa(&saddr.sax.fsa_digipeater[0])); + if (getsockname(STDOUT_FILENO, (struct sockaddr *)&saddr.sax, &slen) == -1) { +- log(L_ERROR, "getsockname: %s", strerror(errno)); ++ n_log(L_ERROR, "getsockname: %s", strerror(errno)); + return 1; + } + strcpy(User.ul_port, nr_config_get_port(&saddr.sax.fsa_ax25.sax25_call)); +@@ -155,7 +155,7 @@ int main(int argc, char *argv[]) + case AF_UNSPEC: + strcpy(User.ul_name, "local"); + if ((p = get_call(getuid())) == NULL) { +- log(L_ERROR, "No uid->callsign association found", -1); ++ n_log(L_ERROR, "No uid->callsign association found", -1); + return 1; + } + strcpy(User.call, p); +@@ -163,14 +163,14 @@ int main(int argc, char *argv[]) + p = UNSPEC_EOL; + break; + default: +- log(L_ERROR, "Unsupported address family %d", User.ul_type); ++ n_log(L_ERROR, "Unsupported address family %d", User.ul_type); + return 1; + } + + NodeIo = axio_init(STDIN_FILENO, STDOUT_FILENO, paclen, p); + + if (NodeIo == NULL) { +- log(L_ERROR, "Error initializing I/O"); ++ n_log(L_ERROR, "Error initializing I/O"); + return 1; + } + #ifdef HAVE_ZLIB_H +@@ -201,7 +201,7 @@ int main(int argc, char *argv[]) + strncpy(User.ul_name, hp->h_name, 31); + User.ul_name[31] = 0; + } else +- log(L_ERROR, "gethostbyaddr: %s", strherror(h_errno)); ++ n_log(L_ERROR, "gethostbyaddr: %s", strherror(h_errno)); + } + + User.state = STATE_LOGIN; +@@ -224,13 +224,13 @@ int main(int argc, char *argv[]) + + if (check_call(User.call) == -1) { + node_msg("Invalid callsign"); +- log(L_LOGIN, "Invalid callsign %s @ %s", User.call, User.ul_name); ++ n_log(L_LOGIN, "Invalid callsign %s @ %s", User.call, User.ul_name); + logout("Invalid callsign"); + } + + if ((pw = read_perms(&User, saddr.sin.sin_addr.s_addr)) == NULL) { + node_msg("Sorry, I'm not allowed to talk to you..."); +- log(L_LOGIN, "Login denied for %s @ %s", User.call, User.ul_name); ++ n_log(L_LOGIN, "Login denied for %s @ %s", User.call, User.ul_name); + logout("Login denied"); + } else if (strcmp(pw, "*") != 0) { + nputs("Password: "); +@@ -248,7 +248,7 @@ int main(int argc, char *argv[]) + if (p == NULL || strcmp(p, pw) != 0) { + nputs("\n"); + node_msg("Login failed"); +- log(L_LOGIN, "Login failed for %s @ %s", User.call, User.ul_name); ++ n_log(L_LOGIN, "Login failed for %s @ %s", User.call, User.ul_name); + logout("Login failed"); + } + } +@@ -266,7 +266,7 @@ int main(int argc, char *argv[]) + + put_prompt(); + +- log(L_LOGIN, "%s @ %s logged in", User.call, User.ul_name); ++ n_log(L_LOGIN, "%s @ %s logged in", User.call, User.ul_name); + + while (1) { + axio_flush(NodeIo); +diff --git node.h node.h +index d630c02..4f03967 100644 +--- node.h ++++ node.h +@@ -116,7 +116,7 @@ extern void node_perror(char *, int); + extern char *print_node(const char *, const char *); + extern char *print_dl(struct user *); + extern int put_prompt(void); +-extern void log(int, const char *, ...); ++extern void n_log(int, const char *, ...); + extern char *strherror(int); + + /* in user.c */ +diff --git user.c user.c +index b182b6e..f8487d5 100644 +--- user.c ++++ user.c +@@ -37,7 +37,7 @@ void login_user(void) + } + if (statbuf.st_size % sizeof(struct user) != 0) { + node_msg("%s: Incorrect size", DATA_NODE_LOGIN_FILE); +- log(L_ERROR, "%s: Incorrect size", DATA_NODE_LOGIN_FILE); ++ n_log(L_ERROR, "%s: Incorrect size", DATA_NODE_LOGIN_FILE); + fclose(f); + return; + } +diff --git util.c util.c +index cb5b912..149f288 100644 +--- util.c ++++ util.c +@@ -29,7 +29,7 @@ static int set_nonblock(int fd, int flag) + // fprintf(stderr, "fd=%d flag=%d 0%lo -> 0%lo\n", fd, flag, oldflags, newflags); + + if (fcntl(fd, F_SETFL, newflags) == -1) { +- log(LOG_ERR, "node_set_nonblock: fnctl(%lo,%lo): %m", fd, newflags); ++ n_log(LOG_ERR, "node_set_nonblock: fnctl(%lo,%lo): %m", fd, newflags); + logout("fcntl failed"); + } + +@@ -39,7 +39,7 @@ static int set_nonblock(int fd, int flag) + static int set_fd_flags(int fd, int flags) + { + if (fcntl(fd, F_SETFL, flags) == -1) { +- log(LOG_ERR, "node_set_fd_flags: fnctl(%d,&d): %m", fd, flags); ++ n_log(LOG_ERR, "node_set_fd_flags: fnctl(%d,&d): %m", fd, flags); + logout("fcntl failed"); + } + +@@ -158,7 +158,7 @@ void node_perror(char *str, int err) + /* return original blocking state */ + set_fd_flags(NodeIo->ofd, flags); + +- log(L_ERROR, buf); ++ n_log(L_ERROR, buf); + } + + char *print_node(const char *alias, const char *call) +@@ -208,7 +208,7 @@ int put_prompt(void) + return err; + } + +-void log(int loglevel, const char *fmt, ...) ++void n_log(int loglevel, const char *fmt, ...) + { + static int opened = 0; + va_list args; |