mirror of
https://github.com/eddyem/small_tel.git
synced 2026-03-20 00:31:00 +03:00
fixed for new vesrion of usefull_macros
This commit is contained in:
@@ -180,9 +180,10 @@ static void toomuch(int fd){
|
||||
LOGWARN("Client fd=%d tried to connect after MAX reached", fd);
|
||||
}
|
||||
// new connections handler
|
||||
static void connected(sl_sock_t *c){
|
||||
static int connected(sl_sock_t *c){
|
||||
if(c->type == SOCKT_UNIX) LOGMSG("New client fd=%d connected", c->fd);
|
||||
else LOGMSG("New client fd=%d, IP=%s connected", c->fd, c->IP);
|
||||
return TRUE;
|
||||
}
|
||||
// disconnected handler
|
||||
static void disconnected(sl_sock_t *c){
|
||||
@@ -196,12 +197,12 @@ void server_run(sl_socktype_e type, const char *node, sl_tty_t *serial){
|
||||
ERRX("server_run(): wrong parameters");
|
||||
}
|
||||
dome_serialdev(serial);
|
||||
sl_sock_changemaxclients(5);
|
||||
sl_sock_maxclhandler(toomuch);
|
||||
sl_sock_connhandler(connected);
|
||||
sl_sock_dischandler(disconnected);
|
||||
s = sl_sock_run_server(type, node, -1, handlers);
|
||||
if(!s) ERRX("Can't create socket and/or run threads");
|
||||
sl_sock_changemaxclients(s, 5);
|
||||
sl_sock_maxclhandler(s, toomuch);
|
||||
sl_sock_connhandler(s, connected);
|
||||
sl_sock_dischandler(s, disconnected);
|
||||
while(s && s->connected){
|
||||
if(!s->rthread){
|
||||
LOGERR("Server handlers thread is dead");
|
||||
|
||||
@@ -54,7 +54,7 @@ glob_pars const Gdefault = {
|
||||
* Define command line options by filling structure:
|
||||
* name has_arg flag val type argptr help
|
||||
*/
|
||||
myoption cmdlnopts[] = {
|
||||
sl_option_t cmdlnopts[] = {
|
||||
// common options
|
||||
{"help", NO_ARGS, NULL, 'h', arg_int, APTR(&help), _("show this help")},
|
||||
{"device", NEED_ARG, NULL, 'i', arg_string, APTR(&G.device), _("serial device name (default: none)")},
|
||||
@@ -79,10 +79,10 @@ glob_pars *parse_args(int argc, char **argv){
|
||||
void *ptr;
|
||||
ptr = memcpy(&G, &Gdefault, sizeof(G)); assert(ptr);
|
||||
// format of help: "Usage: progname [args]\n"
|
||||
change_helpstring("Usage: %s [args]\n\n\tWhere args are:\n");
|
||||
sl_helpstring("Usage: %s [args]\n\n\tWhere args are:\n");
|
||||
// parse arguments
|
||||
parseargs(&argc, &argv, cmdlnopts);
|
||||
if(help) showhelp(-1, cmdlnopts);
|
||||
sl_parseargs(&argc, &argv, cmdlnopts);
|
||||
if(help) sl_showhelp(-1, cmdlnopts);
|
||||
if(argc > 0){
|
||||
G.rest_pars_num = argc;
|
||||
G.rest_pars = calloc(argc, sizeof(char*));
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
glob_pars *GP;
|
||||
|
||||
void signals(int signo){
|
||||
restore_console();
|
||||
if(ttydescr) close_tty(&ttydescr);
|
||||
sl_restore_con();
|
||||
if(ttydescr) sl_tty_close(&ttydescr);
|
||||
LOGERR("exit with status %d", signo);
|
||||
exit(signo);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv){
|
||||
initial_setup();
|
||||
sl_init();
|
||||
signal(SIGTERM, signals); // kill (-15) - quit
|
||||
signal(SIGHUP, SIG_IGN); // hup - ignore
|
||||
signal(SIGINT, signals); // ctrl+C - quit
|
||||
@@ -52,7 +52,7 @@ int main(int argc, char **argv){
|
||||
signals(0); // never reached!
|
||||
}
|
||||
if(GP->logfile){
|
||||
sl_loglevel lvl = LOGLEVEL_ERR;
|
||||
sl_loglevel_e lvl = LOGLEVEL_ERR;
|
||||
for(; GP->verb && lvl < LOGLEVEL_ANY; --GP->verb) ++lvl;
|
||||
DBG("Loglevel: %d", lvl);
|
||||
if(!OPENLOG(GP->logfile, lvl, 1)) ERRX("Can't open log file");
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#define BUFLEN 1024
|
||||
|
||||
TTY_descr *ttydescr = NULL;
|
||||
sl_tty_t *ttydescr = NULL;
|
||||
|
||||
static char buf[BUFLEN];
|
||||
|
||||
@@ -50,14 +50,14 @@ static char *read_string(){
|
||||
return ptr;
|
||||
}
|
||||
ptr = buf;
|
||||
double d0 = dtime();
|
||||
double d0 = sl_dtime();
|
||||
do{
|
||||
if((l = read_tty(ttydescr))){
|
||||
if((l = sl_tty_read(ttydescr))){
|
||||
r += l; LL -= l; ptr += l;
|
||||
if(ptr[-1] == '\n') break;
|
||||
d0 = dtime();
|
||||
d0 = sl_dtime();
|
||||
}
|
||||
}while(dtime() - d0 < WAIT_TMOUT && LL);
|
||||
}while(sl_dtime() - d0 < WAIT_TMOUT && LL);
|
||||
if(r){
|
||||
buf[r] = 0;
|
||||
//DBG("r=%zd, got string: %s", r, buf);
|
||||
@@ -75,10 +75,10 @@ static char *read_string(){
|
||||
int try_connect(char *device, int baudrate){
|
||||
if(!device) return 0;
|
||||
fflush(stdout);
|
||||
ttydescr = new_tty(device, baudrate, 1024);
|
||||
if(ttydescr) ttydescr = tty_open(ttydescr, 1); // exclusive open
|
||||
ttydescr = sl_tty_new(device, baudrate, 1024);
|
||||
if(ttydescr) ttydescr = sl_tty_open(ttydescr, 1); // exclusive open
|
||||
if(!ttydescr) return 0;
|
||||
while(read_tty(ttydescr)); // clear rbuf
|
||||
while(sl_tty_read(ttydescr)); // clear rbuf
|
||||
LOGMSG("Connected to %s", device);
|
||||
return 1;
|
||||
}
|
||||
@@ -91,14 +91,14 @@ void run_terminal(){
|
||||
green(_("Work in terminal mode without echo\n"));
|
||||
int rb;
|
||||
size_t l;
|
||||
setup_con();
|
||||
sl_setup_con();
|
||||
while(1){
|
||||
if((l = read_tty(ttydescr))){
|
||||
if((l = sl_tty_read(ttydescr))){
|
||||
printf("%s", ttydescr->buf);
|
||||
}
|
||||
if((rb = read_console())){
|
||||
if((rb = sl_read_con())){
|
||||
char c = (char) rb;
|
||||
write_tty(ttydescr->comfd, &c, 1);
|
||||
sl_tty_write(ttydescr->comfd, &c, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,8 +109,8 @@ void run_terminal(){
|
||||
*/
|
||||
char *poll_device(){
|
||||
char *ans;
|
||||
double t0 = dtime();
|
||||
while(dtime() - t0 < T_POLLING_TMOUT){
|
||||
double t0 = sl_dtime();
|
||||
while(sl_dtime() - t0 < T_POLLING_TMOUT){
|
||||
if((ans = read_string())){ // parse new data
|
||||
DBG("got %s", ans);
|
||||
/*
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
// Terminal polling timeout - 1 second
|
||||
#define T_POLLING_TMOUT (1.0)
|
||||
|
||||
extern TTY_descr *ttydescr;
|
||||
extern sl_tty_t *ttydescr;
|
||||
void run_terminal();
|
||||
int try_connect(char *device, int baudrate);
|
||||
char *poll_device();
|
||||
|
||||
@@ -46,7 +46,7 @@ static glob_pars const Gdefault = {
|
||||
* Define command line options by filling structure:
|
||||
* name has_arg flag val type argptr help
|
||||
*/
|
||||
static myoption cmdlnopts[] = {
|
||||
static sl_option_t cmdlnopts[] = {
|
||||
// common options
|
||||
{"help", NO_ARGS, NULL, 'h', arg_int, APTR(&help), _("show this help")},
|
||||
{"port", NEED_ARG, NULL, 'P', arg_string, APTR(&G.port), _("port to connect (default: " DEFAULT_PORT ")")},
|
||||
@@ -73,13 +73,13 @@ glob_pars *parse_args(int argc, char **argv){
|
||||
char helpstring[1024], *hptr = helpstring;
|
||||
snprintf(hptr, hlen, "Usage: %%s [args]\n\n\tWhere args are:\n");
|
||||
// format of help: "Usage: progname [args]\n"
|
||||
change_helpstring(helpstring);
|
||||
sl_helpstring(helpstring);
|
||||
// parse arguments
|
||||
parseargs(&argc, &argv, cmdlnopts);
|
||||
if(help) showhelp(-1, cmdlnopts);
|
||||
sl_parseargs(&argc, &argv, cmdlnopts);
|
||||
if(help) sl_showhelp(-1, cmdlnopts);
|
||||
if(argc > 0){
|
||||
fprintf(stderr, "Undefined extra parameters!\n");
|
||||
showhelp(-1, cmdlnopts);
|
||||
sl_showhelp(-1, cmdlnopts);
|
||||
G.rest_pars_num = argc;
|
||||
G.rest_pars = MALLOC(char *, argc);
|
||||
for (i = 0; i < argc; i++)
|
||||
|
||||
@@ -36,7 +36,7 @@ void signals(int sig){
|
||||
signal(sig, SIG_IGN);
|
||||
DBG("Get signal %d, quit.\n", sig);
|
||||
}
|
||||
restore_console();
|
||||
sl_restore_con();
|
||||
exit(sig);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ void iffound_default(pid_t pid){
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
initial_setup();
|
||||
sl_init();
|
||||
char *self = strdup(argv[0]);
|
||||
GP = parse_args(argc, argv);
|
||||
DBG("here");
|
||||
@@ -66,7 +66,7 @@ int main(int argc, char *argv[]){
|
||||
signal(SIGQUIT, signals); // ctrl+\ - quit
|
||||
signal(SIGTSTP, SIG_IGN); // ignore ctrl+Z
|
||||
DBG("here");
|
||||
setup_con();
|
||||
sl_setup_con();
|
||||
/*
|
||||
if(GP->rest_pars_num){
|
||||
for(int i = 0; i < GP->rest_pars_num; ++i)
|
||||
|
||||
@@ -56,7 +56,7 @@ void signals(int signo){
|
||||
exit(signo);
|
||||
}
|
||||
|
||||
static myoption cmdlnopts[] = {
|
||||
static sl_option_t cmdlnopts[] = {
|
||||
{"help", NO_ARGS, NULL, 'h', arg_int, APTR(&G.help), "show this help"},
|
||||
{"address", NEED_ARG, NULL, 'a', arg_string, APTR(&G.server), "server name or IP"},
|
||||
{"port", NEED_ARG, NULL, 'p', arg_string, APTR(&G.port), "server port"},
|
||||
@@ -68,19 +68,19 @@ static myoption cmdlnopts[] = {
|
||||
|
||||
int main(int argc, char **argv){
|
||||
char *self = strdup(argv[0]);
|
||||
initial_setup();
|
||||
parseargs(&argc, &argv, cmdlnopts);
|
||||
if(G.help) showhelp(-1, cmdlnopts);
|
||||
sl_init();
|
||||
sl_parseargs(&argc, &argv, cmdlnopts);
|
||||
if(G.help) sl_showhelp(-1, cmdlnopts);
|
||||
if(argc > 0) WARNX("Got %d unused keys", argc);
|
||||
if(!G.dbname) ERRX("Point database file name");
|
||||
if(!G.server) ERRX("Point server IP or name");
|
||||
if(!G.port) ERRX("Point server port");
|
||||
sl_loglevel lvl = LOGLEVEL_ERR + G.v;
|
||||
sl_loglevel_e lvl = LOGLEVEL_ERR + G.v;
|
||||
if(lvl > LOGLEVEL_ANY) lvl = LOGLEVEL_ANY;
|
||||
if(G.logfile) OPENLOG(G.logfile, lvl, 1);
|
||||
LOGMSG("hello, start");
|
||||
LOGDBG("SQLite version: %s", sqlite3_libversion());
|
||||
check4running(self, G.pidfile);
|
||||
sl_check4running(self, G.pidfile);
|
||||
// signal reactions:
|
||||
signal(SIGTERM, signals); // kill (-15) - quit
|
||||
signal(SIGHUP, SIG_IGN); // hup - ignore
|
||||
@@ -93,11 +93,11 @@ int main(int argc, char **argv){
|
||||
while(1){
|
||||
childpid = fork();
|
||||
if(childpid){ // master
|
||||
double t0 = dtime();
|
||||
double t0 = sl_dtime();
|
||||
LOGMSG("Created child with pid %d", childpid);
|
||||
wait(NULL);
|
||||
LOGWARN("Child %d died", childpid);
|
||||
if(dtime() - t0 < 1.) pause += 5;
|
||||
if(sl_dtime() - t0 < 1.) pause += 5;
|
||||
else pause = 1;
|
||||
if(pause > 900) pause = 900;
|
||||
sleep(pause); // wait a little before respawn
|
||||
|
||||
@@ -78,7 +78,7 @@ static void sendmessage(int fd, const char *msg, int l){
|
||||
LOGWARN("write()");
|
||||
WARN("write()");
|
||||
}else{
|
||||
if(globlog){ // logging turned ON
|
||||
if(sl_globlog){ // logging turned ON
|
||||
tmpbuf[l-1] = 0; // remove trailing '\n' for logging
|
||||
LOGMSG("SEND to fd %d: %s", fd, tmpbuf);
|
||||
}
|
||||
@@ -125,10 +125,10 @@ static int canberead(int fd){
|
||||
// collect data and write into database
|
||||
// @return FALSE if can't get full data string
|
||||
static int getdata(int fd){
|
||||
double t0 = dtime();
|
||||
double t0 = sl_dtime();
|
||||
char buf[BUFSIZ];
|
||||
int len = 0, leave = BUFSIZ, got = 0;
|
||||
while(dtime() - t0 < ANS_TIMEOUT){
|
||||
while(sl_dtime() - t0 < ANS_TIMEOUT){
|
||||
int r = canberead(fd);
|
||||
if(r == 0) continue;
|
||||
r = read(fd, buf + len, leave);
|
||||
@@ -169,7 +169,7 @@ static int getdata(int fd){
|
||||
void run_socket(int fd){
|
||||
double t0 = 0.;
|
||||
while(1){
|
||||
double tlast = dtime();
|
||||
double tlast = sl_dtime();
|
||||
if(tlast - t0 >= POLLING_INTERVAL){
|
||||
sendstrmessage(fd, SERVER_COMMAND);
|
||||
if(getdata(fd)) t0 = tlast;
|
||||
|
||||
Reference in New Issue
Block a user