FreeCalypso > hg > freecalypso-tools
changeset 421:ab8fb95a28da
rvinterf/rvtat converted to use libinterf
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 27 Oct 2018 23:48:20 +0000 |
parents | 322e75a1c8b9 |
children | c1aadfcd185f |
files | rvinterf/rvtat/Makefile rvinterf/rvtat/connect.c rvinterf/rvtat/launchrvif.c |
diffstat | 3 files changed, 4 insertions(+), 122 deletions(-) [+] |
line wrap: on
line diff
--- a/rvinterf/rvtat/Makefile Sat Oct 27 23:39:57 2018 +0000 +++ b/rvinterf/rvtat/Makefile Sat Oct 27 23:48:20 2018 +0000 @@ -1,13 +1,14 @@ CC= gcc CFLAGS= -O2 -I../include PROG= fcup-rvtat -OBJS= connect.o interf.o launchrvif.o main.o +OBJS= interf.o main.o +LIBS= ../libinterf/libinterf.a INSTBIN=/opt/freecalypso/bin all: ${PROG} -${PROG}: ${OBJS} - ${CC} ${CFLAGS} -o $@ ${OBJS} +${PROG}: ${OBJS} ${LIBS} + ${CC} ${CFLAGS} -o $@ ${OBJS} ${LIBS} install: ${PROG} mkdir -p ${INSTBIN}
--- a/rvinterf/rvtat/connect.c Sat Oct 27 23:39:57 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* - * Connecting to an already running rvinterf process - */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <sys/un.h> -#include <stdio.h> -#include <string.h> -#include <strings.h> -#include <stdlib.h> -#include <unistd.h> -#include "pktmux.h" -#include "localsock.h" -#include "exitcodes.h" - -char *socket_pathname = "/tmp/rvinterf_socket"; -int sock; - -connect_local_socket() -{ - /* local socket binding voodoo copied from osmocon */ - struct sockaddr_un local; - unsigned int namelen; - int rc; - - sock = socket(AF_UNIX, SOCK_STREAM, 0); - if (sock < 0) { - perror("socket(AF_UNIX, SOCK_STREAM, 0)"); - exit(ERROR_UNIX); - } - - local.sun_family = AF_UNIX; - strncpy(local.sun_path, socket_pathname, sizeof(local.sun_path)); - local.sun_path[sizeof(local.sun_path) - 1] = '\0'; - - /* we use the same magic that X11 uses in Xtranssock.c for - * calculating the proper length of the sockaddr */ -#if defined(BSD44SOCKETS) || defined(__UNIXWARE__) - local.sun_len = strlen(local.sun_path); -#endif -#if defined(BSD44SOCKETS) || defined(SUN_LEN) - namelen = SUN_LEN(&local); -#else - namelen = strlen(local.sun_path) + - offsetof(struct sockaddr_un, sun_path) + 1; -#endif - - rc = connect(sock, (struct sockaddr *) &local, namelen); - if (rc != 0) { - perror(socket_pathname); - exit(ERROR_RVINTERF); - } - - return(0); -}
--- a/rvinterf/rvtat/launchrvif.c Sat Oct 27 23:39:57 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* - * This module implements the optional "behind the scenes" invokation - * of rvinterf from fc-fsio etc. - */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include "exitcodes.h" - -static char rvinterf_pathname[] = "/opt/freecalypso/bin/rvinterf"; - -extern int sock; - -char *rvinterf_ttyport, *rvinterf_Bopt, *rvinterf_lopt, *rvinterf_wopt; - -launch_rvinterf() -{ - int sp[2], rc; - char *rvif_argv[11], Sarg[16], **ap; - - rc = socketpair(AF_UNIX, SOCK_STREAM, 0, sp); - if (rc < 0) { - perror("socketpair"); - exit(ERROR_UNIX); - } - sock = sp[0]; - sprintf(Sarg, "-S%d", sp[1]); - ap = rvif_argv; - *ap++ = "rvinterf"; - *ap++ = Sarg; - *ap++ = "-n"; - if (rvinterf_Bopt) { - *ap++ = "-B"; - *ap++ = rvinterf_Bopt; - } - if (rvinterf_lopt) { - *ap++ = "-l"; - *ap++ = rvinterf_lopt; - } - if (rvinterf_wopt) { - *ap++ = "-w"; - *ap++ = rvinterf_wopt; - } - *ap++ = rvinterf_ttyport; - *ap = 0; - rc = vfork(); - if (rc < 0) { - perror("vfork for launching rvinterf"); - exit(ERROR_UNIX); - } - if (!rc) { - /* we are in the child - do the exec */ - close(sp[0]); - execv(rvinterf_pathname, rvif_argv); - perror(rvinterf_pathname); - _exit(1); - } - close(sp[1]); - return 0; -}