fixed for "-pedantic-errors"

This commit is contained in:
2026-03-04 09:10:56 +03:00
parent b20e669d93
commit b5d5396167
7 changed files with 98 additions and 88 deletions

View File

@@ -8,7 +8,7 @@ set(VERSION "${MAJOR_VERSION}.${MID_VERSION}.${MINOR_VERSION}")
project(${PROJ} VERSION ${VERSION} LANGUAGES C) project(${PROJ} VERSION ${VERSION} LANGUAGES C)
# default flags # default flags
set(CMAKE_C_FLAGS "${CFLAGS} -O2") set(CMAKE_C_FLAGS "${CFLAGS} -O2 -pedantic-errors")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -Wextra -Wall -Werror -W") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -Wextra -Wall -Werror -W")
set(CMAKE_COLOR_MAKEFILE ON) set(CMAKE_COLOR_MAKEFILE ON)

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-06 15:03+0300\n" "POT-Creation-Date: 2026-03-04 09:05+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -77,79 +77,79 @@ msgstr ""
msgid "Can't use multiple args with arg_none!" msgid "Can't use multiple args with arg_none!"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:267 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:268
#, c-format #, c-format
msgid "double long arguments: --%s" msgid "double long arguments: --%s"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:273 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:274
#, c-format #, c-format
msgid "double short arguments: -%c" msgid "double short arguments: -%c"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:343 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:347
#, c-format #, c-format
msgid "Need argument with %s type\n" msgid "Need argument with %s type\n"
msgstr "" msgstr ""
#. print only one message #. print only one message
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:435 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:439
msgid "sl_showhelp(): option index out of range" msgid "sl_showhelp(): option index out of range"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:441 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:445
#, c-format #, c-format
msgid "Usage: %s [arguments]\n" msgid "Usage: %s [arguments]\n"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:528 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:535
#, c-format #, c-format
msgid "Wrong parameter: %s" msgid "Wrong parameter: %s"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:532 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:539
#, c-format #, c-format
msgid "%s: need argument!" msgid "%s: need argument!"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:536 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:543
#, c-format #, c-format
msgid "Wrong argument \"%s\" of parameter \"%s\"" msgid "Wrong argument \"%s\" of parameter \"%s\""
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:147 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:154
msgid "Server disconnected" msgid "Server disconnected"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:434 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:441
msgid "Can't start server handlers thread" msgid "Can't start server handlers thread"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:503 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:513
msgid "Limit of connections reached" msgid "Limit of connections reached"
msgstr "" msgstr ""
#. check for RB overflow #. check for RB overflow
#. -1 - buffer empty (can't be), -2 - buffer overflow #. -1 - buffer empty (can't be), -2 - buffer overflow
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:547 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:557
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:548 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:558
#, c-format #, c-format
msgid "Server thread: ring buffer overflow for fd=%d" msgid "Server thread: ring buffer overflow for fd=%d"
msgstr "" msgstr ""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:562 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:572
#, c-format #, c-format
msgid "Server thread: can't write data to ringbuffer: overflow from fd=%d" msgid "Server thread: can't write data to ringbuffer: overflow from fd=%d"
msgstr "" msgstr ""
#. buffer overflow #. buffer overflow
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:574 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:584
#, c-format #, c-format
msgid "Server thread: buffer overflow from fd=%d" msgid "Server thread: buffer overflow from fd=%d"
msgstr "" msgstr ""
#. never reached #. never reached
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:664 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:681
#, c-format #, c-format
msgid "Unsupported socket type %d" msgid "Unsupported socket type %d"
msgstr "" msgstr ""

View File

@@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n" msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-06 14:57+0300\n" "POT-Creation-Date: 2026-03-04 09:01+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -76,80 +76,80 @@ msgstr "
msgid "Can't use multiple args with arg_none!" msgid "Can't use multiple args with arg_none!"
msgstr "íÁÓÓÉ× ÐÁÒÁÍÅÔÒÏ× ÎÅ ÍÏÖÅÔ ÉÍÅÔØ ÔÉÐ arg_none!" msgstr "íÁÓÓÉ× ÐÁÒÁÍÅÔÒÏ× ÎÅ ÍÏÖÅÔ ÉÍÅÔØ ÔÉÐ arg_none!"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:267 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:268
#, c-format #, c-format
msgid "double long arguments: --%s" msgid "double long arguments: --%s"
msgstr "ÄÕÂÌÉÒÕÀÝÉÊÓÑ ÄÌÉÎÎÙÊ ÐÁÒÁÍÅÔÒ: --%s" msgstr "ÄÕÂÌÉÒÕÀÝÉÊÓÑ ÄÌÉÎÎÙÊ ÐÁÒÁÍÅÔÒ: --%s"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:273 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:274
#, c-format #, c-format
msgid "double short arguments: -%c" msgid "double short arguments: -%c"
msgstr "ÄÕÂÌÉÒÕÀÝÉÊÓÑ ËÏÒÏÔËÉÊ ÐÁÒÁÍÅÔÒ: -%c" msgstr "ÄÕÂÌÉÒÕÀÝÉÊÓÑ ËÏÒÏÔËÉÊ ÐÁÒÁÍÅÔÒ: -%c"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:343 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:347
#, c-format #, c-format
msgid "Need argument with %s type\n" msgid "Need argument with %s type\n"
msgstr "îÅÏÂÈÏÄÉÍ ÁÒÇÕÍÅÎÔ Ó ÔÉÐÏÍ %s\n" msgstr "îÅÏÂÈÏÄÉÍ ÁÒÇÕÍÅÎÔ Ó ÔÉÐÏÍ %s\n"
#. print only one message #. print only one message
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:435 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:439
msgid "sl_showhelp(): option index out of range" msgid "sl_showhelp(): option index out of range"
msgstr "sl_showhelp(): ÉÎÄÅËÓ ÏÐÃÉÉ ×ÎÅ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ" msgstr "sl_showhelp(): ÉÎÄÅËÓ ÏÐÃÉÉ ×ÎÅ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:441 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:445
#, c-format #, c-format
msgid "Usage: %s [arguments]\n" msgid "Usage: %s [arguments]\n"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÁÒÇÕÍÅÎÔÙ]\n" msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÁÒÇÕÍÅÎÔÙ]\n"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:528 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:535
#, c-format #, c-format
msgid "Wrong parameter: %s" msgid "Wrong parameter: %s"
msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÐÁÒÁÍÅÔÒ: %s" msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÐÁÒÁÍÅÔÒ: %s"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:532 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:539
#, c-format #, c-format
msgid "%s: need argument!" msgid "%s: need argument!"
msgstr "%s: ÎÅÏÂÈÏÄÉÍ ÁÒÇÕÍÅÎÔ!" msgstr "%s: ÎÅÏÂÈÏÄÉÍ ÁÒÇÕÍÅÎÔ!"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:536 #: /home/eddy/Docs/SAO/C_diff/snippets_library/parseargs.c:543
#, c-format #, c-format
msgid "Wrong argument \"%s\" of parameter \"%s\"" msgid "Wrong argument \"%s\" of parameter \"%s\""
msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÁÒÇÕÍÅÎÔ \"%s\" ÐÁÒÁÍÅÔÒÁ \"%s\"" msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÁÒÇÕÍÅÎÔ \"%s\" ÐÁÒÁÍÅÔÒÁ \"%s\""
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:147 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:154
msgid "Server disconnected" msgid "Server disconnected"
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ" msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:434 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:441
msgid "Can't start server handlers thread" msgid "Can't start server handlers thread"
msgstr "îÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÐÏÔÏË-ÏÂÒÁÂÏÔÞÉË ÓÅÒ×ÅÒÁ" msgstr "îÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÐÏÔÏË-ÏÂÒÁÂÏÔÞÉË ÓÅÒ×ÅÒÁ"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:503 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:513
msgid "Limit of connections reached" msgid "Limit of connections reached"
msgstr "äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ÓÏÅÄÉÎÅÎÉÊ" msgstr "äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ÓÏÅÄÉÎÅÎÉÊ"
#. check for RB overflow #. check for RB overflow
#. -1 - buffer empty (can't be), -2 - buffer overflow #. -1 - buffer empty (can't be), -2 - buffer overflow
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:547 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:557
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:548 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:558
#, c-format #, c-format
msgid "Server thread: ring buffer overflow for fd=%d" msgid "Server thread: ring buffer overflow for fd=%d"
msgstr "ðÏÔÏË ÓÅÒ×ÅÒÁ: ÐÅÒÅÐÏÌÎÅÎÉÅ ÂÕÆÅÒÁ ÏÔ fd=%d" msgstr "ðÏÔÏË ÓÅÒ×ÅÒÁ: ÐÅÒÅÐÏÌÎÅÎÉÅ ÂÕÆÅÒÁ ÏÔ fd=%d"
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:562 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:572
#, c-format #, c-format
msgid "Server thread: can't write data to ringbuffer: overflow from fd=%d" msgid "Server thread: can't write data to ringbuffer: overflow from fd=%d"
msgstr "ðÏÔÏË ÓÅÒ×ÅÒÁ: ÎÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÄÁÎÎÙÅ × ËÏÌØÃÅ×ÏÍ ÂÕÆÅÒÅ, " msgstr "ðÏÔÏË ÓÅÒ×ÅÒÁ: ÎÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÄÁÎÎÙÅ × ËÏÌØÃÅ×ÏÍ ÂÕÆÅÒÅ, "
"ÐÅÒÅÐÏÌÎÅÎÉÅ ÏÔ fd=%d" "ÐÅÒÅÐÏÌÎÅÎÉÅ ÏÔ fd=%d"
#. buffer overflow #. buffer overflow
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:574 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:584
#, c-format #, c-format
msgid "Server thread: buffer overflow from fd=%d" msgid "Server thread: buffer overflow from fd=%d"
msgstr "ðÏÔÏË ÓÅÒ×ÅÒÁ: ÐÅÒÅÐÏÌÎÅÎÉÅ ÂÕÆÅÒÁ ÏÔ fd=%d" msgstr "ðÏÔÏË ÓÅÒ×ÅÒÁ: ÐÅÒÅÐÏÌÎÅÎÉÅ ÂÕÆÅÒÁ ÏÔ fd=%d"
#. never reached #. never reached
#: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:664 #: /home/eddy/Docs/SAO/C_diff/snippets_library/socket.c:681
#, c-format #, c-format
msgid "Unsupported socket type %d" msgid "Unsupported socket type %d"
msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ ÓÏËÅÔÁ %d" msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ ÓÏËÅÔÁ %d"

View File

@@ -191,6 +191,18 @@ void *get_aptr(void *paptr, sl_argtype_e type){
return aptr[i - 1]; return aptr[i - 1];
} }
static int cmpstringp(const void *p1, const void *p2){
if(!p1 || !p2) return 0;
const char *str1 = * (char * const *) p1, *str2 = * (char * const *) p2;
if(!str1 && !str2) return 0;
else if(!str1) return 1;
else if(!str2) return -1;
return strcmp(str1, str2);
}
static int cmpcharp(const void *p1, const void *p2){
return (int)(*(char * const)p1 - *(char *const)p2);
}
/** /**
* @brief sl_parseargs_hf - parse arguments with user help funtion * @brief sl_parseargs_hf - parse arguments with user help funtion
* @param argc - amount of arguments * @param argc - amount of arguments
@@ -246,17 +258,6 @@ void sl_parseargs_hf(int *argc, char ***argv, sl_option_t *options, void (*helpf
} }
} }
// sort all lists & check for repeating // sort all lists & check for repeating
int cmpstringp(const void *p1, const void *p2){
if(!p1 || !p2) return 0;
const char *str1 = * (char * const *) p1, *str2 = * (char * const *) p2;
if(!str1 && !str2) return 0;
else if(!str1) return 1;
else if(!str2) return -1;
return strcmp(str1, str2);
}
int cmpcharp(const void *p1, const void *p2){
return (int)(*(char * const)p1 - *(char *const)p2);
}
qsort(longlist, optsize, sizeof(char *), cmpstringp); qsort(longlist, optsize, sizeof(char *), cmpstringp);
qsort(shortlist,optsize, sizeof(char), cmpcharp); qsort(shortlist,optsize, sizeof(char), cmpcharp);
char *prevl = longlist[0], prevshrt = shortlist[0]; char *prevl = longlist[0], prevshrt = shortlist[0];
@@ -336,7 +337,10 @@ void sl_parseargs_hf(int *argc, char ***argv, sl_option_t *options, void (*helpf
type = "string"; type = "string";
break; break;
case arg_function: case arg_function:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
result = ((sl_argfn_t)aptr)(optarg); result = ((sl_argfn_t)aptr)(optarg);
#pragma GCC diagnostic pop
break; break;
} }
if(!result){ if(!result){
@@ -460,14 +464,7 @@ void sl_showhelp(int oindex, sl_option_t *options){
exit(-1); exit(-1);
} }
/** static int findsubopt(char *par, sl_suboption_t *so){
* @brief sl_get_suboption - get suboptions from parameter string
* @param str - parameter string
* @param opt - pointer to suboptions structure
* @return TRUE if all OK
*/
int sl_get_suboption(char *str, sl_suboption_t *opt){
int findsubopt(char *par, sl_suboption_t *so){
int idx = 0; int idx = 0;
if(!par) return -1; if(!par) return -1;
while(so[idx].name){ while(so[idx].name){
@@ -475,8 +472,8 @@ int sl_get_suboption(char *str, sl_suboption_t *opt){
++idx; ++idx;
} }
return -1; // badarg return -1; // badarg
} }
int opt_setarg(sl_suboption_t *so, int idx, char *val){ static int opt_setarg(sl_suboption_t *so, int idx, char *val){
sl_suboption_t *soptr = &so[idx]; sl_suboption_t *soptr = &so[idx];
int result = FALSE; int result = FALSE;
void *aptr = soptr->argptr; void *aptr = soptr->argptr;
@@ -502,11 +499,21 @@ int sl_get_suboption(char *str, sl_suboption_t *opt){
result = (*((void**)aptr) = (void*)strdup(val)) != NULL; result = (*((void**)aptr) = (void*)strdup(val)) != NULL;
break; break;
case arg_function: case arg_function:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
result = ((sl_argfn_t)aptr)(val); result = ((sl_argfn_t)aptr)(val);
#pragma GCC diagnostic pop
break; break;
} }
return result; return result;
} }
/**
* @brief sl_get_suboption - get suboptions from parameter string
* @param str - parameter string
* @param opt - pointer to suboptions structure
* @return TRUE if all OK
*/
int sl_get_suboption(char *str, sl_suboption_t *opt){
char *tok; char *tok;
int ret = FALSE; int ret = FALSE;
char *tmpbuf; char *tmpbuf;

View File

@@ -469,7 +469,9 @@ static void *serverthread(void _U_ *d){
// ZERO - listening server socket // ZERO - listening server socket
poll_set[0].fd = sockfd; poll_set[0].fd = sockfd;
poll_set[0].events = POLLIN; poll_set[0].events = POLLIN;
// disconnect client // disconnect client (no way to make this function non-nested)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
void disconnect_(sl_sock_t *c, int N){ void disconnect_(sl_sock_t *c, int N){
DBG("Disconnect client \"%s\" (fd=%d)", c->IP, c->fd); DBG("Disconnect client \"%s\" (fd=%d)", c->IP, c->fd);
if(s->disconnect_handler) s->disconnect_handler(c); if(s->disconnect_handler) s->disconnect_handler(c);
@@ -496,6 +498,7 @@ static void *serverthread(void _U_ *d){
pthread_mutex_unlock(&c->mutex); pthread_mutex_unlock(&c->mutex);
--nfd; --nfd;
} }
#pragma GCC diagnostic pop
// allocate buffer with size not less than RB size // allocate buffer with size not less than RB size
size_t bufsize = s->buffer->length; // as RB should be 1 byte less, this is OK size_t bufsize = s->buffer->length; // as RB should be 1 byte less, this is OK
uint8_t *buf = MALLOC(uint8_t, bufsize); uint8_t *buf = MALLOC(uint8_t, bufsize);

View File

@@ -453,7 +453,7 @@ typedef struct{
double magick; // -Inf - to distinguish it from sl_sock_*_t double magick; // -Inf - to distinguish it from sl_sock_*_t
int n; // if n < 0 there was no any number in `key` int n; // if n < 0 there was no any number in `key`
} sl_sock_keyno_t; } sl_sock_keyno_t;
#define SL_SOCK_KEYNO_DEFAULT (sl_sock_keyno_t){.magick = -INFINITY, .n = -1} #define SL_SOCK_KEYNO_DEFAULT {.magick = -INFINITY, .n = -1}
void sl_sock_keyno_init(sl_sock_keyno_t*); void sl_sock_keyno_init(sl_sock_keyno_t*);
int sl_sock_keyno_check(sl_sock_keyno_t*); int sl_sock_keyno_check(sl_sock_keyno_t*);