mirror of
https://github.com/eddyem/tty_term.git
synced 2026-01-31 20:35:15 +03:00
ver 0.1.3: fixed bug with UNIX-sockets
This commit is contained in:
parent
8325f811e7
commit
ffdc740f5c
@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
set(PROJ tty_term)
|
set(PROJ tty_term)
|
||||||
set(MINOR_VERSION "2")
|
set(MINOR_VERSION "3")
|
||||||
set(MID_VERSION "1")
|
set(MID_VERSION "1")
|
||||||
set(MAJOR_VERSION "0")
|
set(MAJOR_VERSION "0")
|
||||||
set(VERSION "${MAJOR_VERSION}.${MID_VERSION}.${MINOR_VERSION}")
|
set(VERSION "${MAJOR_VERSION}.${MID_VERSION}.${MINOR_VERSION}")
|
||||||
@ -9,6 +9,9 @@ project(${PROJ} VERSION ${VERSION} LANGUAGES C)
|
|||||||
|
|
||||||
message("VER: ${VERSION}")
|
message("VER: ${VERSION}")
|
||||||
|
|
||||||
|
# options
|
||||||
|
option(DEBUG "Compile in debug mode" OFF)
|
||||||
|
|
||||||
# default flags
|
# default flags
|
||||||
set(CMAKE_C_FLAGS_RELEASE "")
|
set(CMAKE_C_FLAGS_RELEASE "")
|
||||||
set(CMAKE_C_FLAGS_DEBUG "")
|
set(CMAKE_C_FLAGS_DEBUG "")
|
||||||
@ -20,13 +23,14 @@ set(CMAKE_COLOR_MAKEFILE ON)
|
|||||||
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SOURCES)
|
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SOURCES)
|
||||||
|
|
||||||
# cmake -DEBUG=1 -> debugging
|
# cmake -DEBUG=1 -> debugging
|
||||||
if(DEFINED EBUG)
|
if(DEBUG)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Werror -W")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wall -Werror -W -Og -g3 -ggdb -fno-builtin-strlen")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wall -Werror -W")
|
|
||||||
set(CMAKE_BUILD_TYPE DEBUG)
|
set(CMAKE_BUILD_TYPE DEBUG)
|
||||||
set(CMAKE_VERBOSE_MAKEFILE "ON")
|
set(CMAKE_VERBOSE_MAKEFILE "ON")
|
||||||
add_definitions(-DEBUG)
|
add_definitions(-DEBUG)
|
||||||
else()
|
else()
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native -fdata-sections -ffunction-sections -flto=auto")
|
||||||
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -flto=auto")
|
||||||
set(CMAKE_BUILD_TYPE RELEASE)
|
set(CMAKE_BUILD_TYPE RELEASE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -36,7 +36,7 @@ glob_pars const Gdefault = {
|
|||||||
.speed = 9600,
|
.speed = 9600,
|
||||||
.eol = "n",
|
.eol = "n",
|
||||||
.tmoutms = 100,
|
.tmoutms = 100,
|
||||||
.port = "8N1"
|
.serformat = "8N1"
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -53,7 +53,7 @@ static myoption cmdlnopts[] = {
|
|||||||
{"port", NEED_ARG, NULL, 'p', arg_string, APTR(&G.port), _("socket port (none for UNIX)")},
|
{"port", NEED_ARG, NULL, 'p', arg_string, APTR(&G.port), _("socket port (none for UNIX)")},
|
||||||
{"socket", NO_ARGS, NULL, 'S', arg_int, APTR(&G.socket), _("open socket")},
|
{"socket", NO_ARGS, NULL, 'S', arg_int, APTR(&G.socket), _("open socket")},
|
||||||
{"dumpfile",NEED_ARG, NULL, 'd', arg_string, APTR(&G.dumpfile), _("dump data to this file")},
|
{"dumpfile",NEED_ARG, NULL, 'd', arg_string, APTR(&G.dumpfile), _("dump data to this file")},
|
||||||
{"format", NEED_ARG, NULL, 'f', arg_string, APTR(&G.port), _("tty format (default: 8N1)")},
|
{"format", NEED_ARG, NULL, 'f', arg_string, APTR(&G.serformat), _("tty format (default: 8N1)")},
|
||||||
end_option
|
end_option
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -31,6 +31,7 @@ typedef struct{
|
|||||||
char *ttyname; // device name
|
char *ttyname; // device name
|
||||||
char *eol; // end of line: \r (CR), \rn (CR+LF) or \n (LF): "r", "rn", "n"
|
char *eol; // end of line: \r (CR), \rn (CR+LF) or \n (LF): "r", "rn", "n"
|
||||||
char *port; // socket port
|
char *port; // socket port
|
||||||
|
char *serformat; // format of serial line
|
||||||
} glob_pars;
|
} glob_pars;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
10
main.c
10
main.c
@ -59,12 +59,18 @@ int main(int argc, char **argv){
|
|||||||
signals(0);
|
signals(0);
|
||||||
}
|
}
|
||||||
conndev.name = strdup(G->ttyname);
|
conndev.name = strdup(G->ttyname);
|
||||||
conndev.port = strdup(G->port);
|
DBG("device name: %s", conndev.name);
|
||||||
if(G->socket){
|
if(G->socket){
|
||||||
if(!G->port) conndev.type = DEV_UNIXSOCKET;
|
if(!G->port) conndev.type = DEV_UNIXSOCKET;
|
||||||
else conndev.type = DEV_NETSOCKET;
|
else{
|
||||||
|
conndev.port = strdup(G->port);
|
||||||
|
conndev.type = DEV_NETSOCKET;
|
||||||
|
}
|
||||||
|
DBG("socket port=%s, type=%d", conndev.port, conndev.type);
|
||||||
}else{
|
}else{
|
||||||
conndev.speed = G->speed;
|
conndev.speed = G->speed;
|
||||||
|
conndev.port = strdup(G->serformat); // `port` of tty is serial format
|
||||||
|
DBG("speed=%d, format=%s", conndev.speed, conndev.port);
|
||||||
}
|
}
|
||||||
if(!opendev(&conndev, G->dumpfile)){
|
if(!opendev(&conndev, G->dumpfile)){
|
||||||
signals(0);
|
signals(0);
|
||||||
|
|||||||
@ -357,7 +357,7 @@ static TTY_descr2* opentty(){
|
|||||||
goto someerr;
|
goto someerr;
|
||||||
}
|
}
|
||||||
ioctl(descr->comfd, TCGETS2, &descr->tty);
|
ioctl(descr->comfd, TCGETS2, &descr->tty);
|
||||||
if(descr->tty.c_ispeed != device->speed || descr->tty.c_ospeed != device->speed){
|
if(descr->tty.c_ispeed != (speed_t)device->speed || descr->tty.c_ospeed != (speed_t)device->speed){
|
||||||
WARN(_("Can't set speed %d, got ispeed=%d, ospeed=%d"), device->speed, descr->tty.c_ispeed, descr->tty.c_ospeed);
|
WARN(_("Can't set speed %d, got ispeed=%d, ospeed=%d"), device->speed, descr->tty.c_ispeed, descr->tty.c_ospeed);
|
||||||
//goto someerr;
|
//goto someerr;
|
||||||
}
|
}
|
||||||
@ -381,7 +381,8 @@ int opendev(chardevice *d, char *path){
|
|||||||
device = MALLOC(chardevice, 1);
|
device = MALLOC(chardevice, 1);
|
||||||
memcpy(device, d, sizeof(chardevice));
|
memcpy(device, d, sizeof(chardevice));
|
||||||
device->name = strdup(d->name);
|
device->name = strdup(d->name);
|
||||||
device->port = strdup(d->port);
|
if(d->port) device->port = strdup(d->port);
|
||||||
|
DBG("devtype=%d", device->type);
|
||||||
switch(device->type){
|
switch(device->type){
|
||||||
case DEV_TTY:
|
case DEV_TTY:
|
||||||
DBG("Serial");
|
DBG("Serial");
|
||||||
@ -394,6 +395,7 @@ int opendev(chardevice *d, char *path){
|
|||||||
break;
|
break;
|
||||||
case DEV_NETSOCKET:
|
case DEV_NETSOCKET:
|
||||||
case DEV_UNIXSOCKET:
|
case DEV_UNIXSOCKET:
|
||||||
|
DBG("Socket");
|
||||||
device->dev = opensocket();
|
device->dev = opensocket();
|
||||||
if(!device->dev){
|
if(!device->dev){
|
||||||
WARNX("Can't open socket");
|
WARNX("Can't open socket");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user