Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
lektor
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Kubat
lektor
Validations
dd601d90
Vérifiée
Valider
dd601d90
rédigé
5 mai 2020
par
Kubat
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Less check in lkt
parent
f3223dc1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion
!75
Resolve "Stickers in lkt"
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
src/main/lkt.c
+63
-68
63 ajouts, 68 suppressions
src/main/lkt.c
avec
63 ajouts
et
68 suppressions
src/main/lkt.c
+
63
−
68
Voir le fichier @
dd601d90
...
@@ -28,8 +28,6 @@
...
@@ -28,8 +28,6 @@
#define LKT_KEY_VALUE_SEP ": \n\t\0"
#define LKT_KEY_VALUE_SEP ": \n\t\0"
#define fail_if(cond, msg) { if (cond) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } }
#define fail_if(cond, msg) { if (cond) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } }
#define fail(msg) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); }
#define fail(msg) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); }
#define lkt_send_and_exit(buffer, len) exit(write_socket(lkt_connect(), buffer, len))
#define write_socket(sock, buff, len) (fwrite(buff, sizeof(char), len, sock) != len)
#define exit_with_status(sock, buff) { \
#define exit_with_status(sock, buff) { \
read_socket(sock, buff, 2); \
read_socket(sock, buff, 2); \
...
@@ -82,29 +80,6 @@ read_socket(FILE *sock, char *buff, size_t max_len)
...
@@ -82,29 +80,6 @@ read_socket(FILE *sock, char *buff, size_t max_len)
return
i
;
return
i
;
}
}
static
int
write_socket_format
(
FILE
*
sock
,
const
char
*
format
,
...)
{
int
ret
=
1
,
size
;
char
buff
[
LKT_MESSAGE_MAX
];
va_list
ap
;
va_start
(
ap
,
format
);
size
=
vsnprintf
(
buff
,
LKT_MESSAGE_MAX
-
1
,
format
,
ap
);
buff
[
LKT_MESSAGE_MAX
-
1
]
=
0
;
if
(
size
<
0
)
goto
err
;
if
(
fwrite
(
buff
,
sizeof
(
char
),
size
,
sock
)
<
(
unsigned
int
)
size
)
goto
err
;
ret
=
0
;
err:
va_end
(
ap
);
return
ret
;
}
static
FILE
*
static
FILE
*
create_socket
(
const
char
*
host
,
const
char
*
port
)
create_socket
(
const
char
*
host
,
const
char
*
port
)
{
{
...
@@ -143,6 +118,33 @@ lkt_connect(void)
...
@@ -143,6 +118,33 @@ lkt_connect(void)
return
sock
;
return
sock
;
}
}
static
void
write_socket
(
FILE
*
sock
,
const
char
*
format
,
...)
{
int
size
;
char
buff
[
LKT_MESSAGE_MAX
];
va_list
ap
;
va_start
(
ap
,
format
);
size
=
vsnprintf
(
buff
,
LKT_MESSAGE_MAX
-
1
,
format
,
ap
);
buff
[
LKT_MESSAGE_MAX
-
1
]
=
0
;
if
(
size
<
0
)
fail
(
"Connexion error"
)
if
(
fwrite
(
buff
,
sizeof
(
char
),
size
,
sock
)
<
(
unsigned
int
)
size
)
fail
(
"Connexion error"
)
va_end
(
ap
);
}
noreturn
static
inline
void
lkt_send_and_exit
(
const
char
*
buffer
,
size_t
len
)
{
write_socket
(
lkt_connect
(),
buffer
,
len
);
exit
(
EXIT_SUCCESS
);
}
static
char
*
static
char
*
lkt_skip_key
(
char
*
buffer
)
lkt_skip_key
(
char
*
buffer
)
{
{
...
@@ -163,7 +165,7 @@ send_cmd_with_uri(FILE *sock, char *cmd, int argc, const char **argv)
...
@@ -163,7 +165,7 @@ send_cmd_with_uri(FILE *sock, char *cmd, int argc, const char **argv)
}
}
strncat
(
buf
,
argv
[
i
],
LKT_MESSAGE_MAX
-
1
);
strncat
(
buf
,
argv
[
i
],
LKT_MESSAGE_MAX
-
1
);
strncat
(
buf
,
"
\n
"
,
LKT_MESSAGE_MAX
-
1
);
strncat
(
buf
,
"
\n
"
,
LKT_MESSAGE_MAX
-
1
);
(
void
)
write_socket
_format
(
sock
,
"%s %s://%s"
,
cmd
,
argv
[
0
],
buf
);
write_socket
(
sock
,
"%s %s://%s"
,
cmd
,
argv
[
0
],
buf
);
}
}
/* Functions implementing options. */
/* Functions implementing options. */
...
@@ -188,7 +190,8 @@ simple_send_with_password__(const char *cmd)
...
@@ -188,7 +190,8 @@ simple_send_with_password__(const char *cmd)
fail
(
"Password not provided"
);
fail
(
"Password not provided"
);
static
const
char
cmd__
[]
=
"password %s
\n
%s
\n
close
\n
"
;
static
const
char
cmd__
[]
=
"password %s
\n
%s
\n
close
\n
"
;
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
exit
(
write_socket_format
(
sock
,
cmd__
,
password
,
cmd
));
write_socket
(
sock
,
cmd__
,
password
,
cmd
);
exit
(
EXIT_SUCCESS
);
}
}
noreturn
void
noreturn
void
...
@@ -218,17 +221,17 @@ rescan_or_update__(struct lkt_cmd_args *args, const char *cmd)
...
@@ -218,17 +221,17 @@ rescan_or_update__(struct lkt_cmd_args *args, const char *cmd)
/* All the db */
/* All the db */
if
(
args
->
argc
==
0
)
if
(
args
->
argc
==
0
)
exit
(
write_socket
_format
(
sock
,
"password %s
\n
%s
\n
"
,
password
,
cmd
)
)
;
write_socket
(
sock
,
"password %s
\n
%s
\n
"
,
password
,
cmd
);
/* With a query */
/* With a query */
else
{
else
{
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
for
(
i
=
0
;
i
<
args
->
argc
;
++
i
)
for
(
i
=
0
;
i
<
args
->
argc
;
++
i
)
strncat
(
buff
,
args
->
argv
[
i
],
LKT_MESSAGE_MAX
-
1
);
strncat
(
buff
,
args
->
argv
[
i
],
LKT_MESSAGE_MAX
-
1
);
exit
(
write_socket
_format
(
sock
,
"password %s
\n
%s %s
\n
"
,
password
,
cmd
,
buff
)
)
;
write_socket
(
sock
,
"password %s
\n
%s %s
\n
"
,
password
,
cmd
,
buff
);
}
}
abort
(
);
exit
(
EXIT_SUCCESS
);
}
}
noreturn
void
noreturn
void
...
@@ -259,11 +262,8 @@ play__(struct lkt_cmd_args *args)
...
@@ -259,11 +262,8 @@ play__(struct lkt_cmd_args *args)
static
const
char
cmd_pause__
[]
=
"pause
\n
close
\n
"
;
static
const
char
cmd_pause__
[]
=
"pause
\n
close
\n
"
;
char
buff
[
LKT_MESSAGE_MAX
];
char
buff
[
LKT_MESSAGE_MAX
];
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
write_socket
(
sock
,
status__
);
if
(
write_socket
(
sock
,
status__
,
sizeof
(
status__
)))
/* In bytes. */
exit
(
EXIT_FAILURE
);
for
(;;)
{
for
(;;)
{
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
...
@@ -276,8 +276,10 @@ play__(struct lkt_cmd_args *args)
...
@@ -276,8 +276,10 @@ play__(struct lkt_cmd_args *args)
if
(
STR_NMATCH
(
lkt_skip_key
(
buff
),
"stop"
,
4
))
{
if
(
STR_NMATCH
(
lkt_skip_key
(
buff
),
"stop"
,
4
))
{
if
(
!
pos
)
if
(
!
pos
)
lkt_send_and_exit
(
cmd_play__
,
sizeof
(
cmd_play__
));
/* In bytes. */
lkt_send_and_exit
(
cmd_play__
,
sizeof
(
cmd_play__
));
/* In bytes. */
else
else
{
exit
(
write_socket_format
(
lkt_connect
(),
cmd_play_from__
,
pos
));
write_socket
(
lkt_connect
(),
cmd_play_from__
,
pos
);
exit
(
EXIT_SUCCESS
);
}
}
}
else
else
...
@@ -295,8 +297,7 @@ ping__(struct lkt_cmd_args *args)
...
@@ -295,8 +297,7 @@ ping__(struct lkt_cmd_args *args)
fail
(
"Invalid argument, the ping command takes no arguments"
);
fail
(
"Invalid argument, the ping command takes no arguments"
);
char
buff
[
6
]
=
{
0
};
char
buff
[
6
]
=
{
0
};
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
if
(
write_socket
(
sock
,
"ping
\n
close
\n
"
,
sizeof
(
"ping
\n
"
)))
write_socket
(
sock
,
"ping
\n
close
\n
"
);
fail
(
"Failed to send the ping to lektord"
);
read_socket
(
sock
,
buff
,
6
*
sizeof
(
char
));
read_socket
(
sock
,
buff
,
6
*
sizeof
(
char
));
if
(
!
STR_NMATCH
(
buff
,
"OK"
,
2
))
if
(
!
STR_NMATCH
(
buff
,
"OK"
,
2
))
fail
(
"ACK"
);
fail
(
"ACK"
);
...
@@ -316,9 +317,7 @@ current__(struct lkt_cmd_args *args)
...
@@ -316,9 +317,7 @@ current__(struct lkt_cmd_args *args)
char
*
mem
=
NULL
;
char
*
mem
=
NULL
;
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
if
(
write_socket
(
sock
,
current_song__
,
sizeof
(
current_song__
)))
/* In bytes. */
write_socket
(
sock
,
current_song__
);
exit
(
EXIT_FAILURE
);
assert
(
mem
=
calloc
(
6
*
LKT_MESSAGE_MAX
,
sizeof
(
char
)));
assert
(
mem
=
calloc
(
6
*
LKT_MESSAGE_MAX
,
sizeof
(
char
)));
assert
(
memset
(
mem
,
0
,
6
*
LKT_MESSAGE_MAX
*
sizeof
(
char
)));
assert
(
memset
(
mem
,
0
,
6
*
LKT_MESSAGE_MAX
*
sizeof
(
char
)));
...
@@ -382,9 +381,7 @@ queue_pop__(struct lkt_cmd_args *args)
...
@@ -382,9 +381,7 @@ queue_pop__(struct lkt_cmd_args *args)
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
/* Get lektor's status. */
/* Get lektor's status. */
write_socket
(
sock
,
"status
\n
"
);
if
(
write_socket
(
sock
,
"status
\n
"
,
sizeof
(
"status
\n
"
)))
exit
(
EXIT_FAILURE
);
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
for
(;;)
{
for
(;;)
{
...
@@ -405,7 +402,7 @@ queue_pop__(struct lkt_cmd_args *args)
...
@@ -405,7 +402,7 @@ queue_pop__(struct lkt_cmd_args *args)
sock
=
lkt_connect
();
sock
=
lkt_connect
();
if
(
!
songid
)
if
(
!
songid
)
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
write_socket
_format
(
sock
,
"next
\n
deleteid %d
\n
"
,
songid
);
write_socket
(
sock
,
"next
\n
deleteid %d
\n
"
,
songid
);
exit_with_status
(
sock
,
buff
);
exit_with_status
(
sock
,
buff
);
}
}
...
@@ -429,8 +426,7 @@ status__(struct lkt_cmd_args *args)
...
@@ -429,8 +426,7 @@ status__(struct lkt_cmd_args *args)
/* Get lektor's status. */
/* Get lektor's status. */
if
(
write_socket
(
sock
,
status_str__
,
strlen
(
status_str__
)))
write_socket
(
sock
,
status_str__
);
goto
error
;
#define assign_flag(str, f) if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { flags[it++] = f; continue; }
#define assign_flag(str, f) if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { flags[it++] = f; continue; }
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
...
@@ -497,7 +493,7 @@ queue_delete__(struct lkt_cmd_args *args)
...
@@ -497,7 +493,7 @@ queue_delete__(struct lkt_cmd_args *args)
sscanf
(
args
->
argv
[
0
],
"%d"
,
&
dumy
);
sscanf
(
args
->
argv
[
0
],
"%d"
,
&
dumy
);
if
(
dumy
!=
0
)
{
if
(
dumy
!=
0
)
{
fail_if
(
write_socket
_format
(
sock
,
cmd_id__
,
dumy
)
,
"ACK"
)
;
write_socket
(
sock
,
cmd_id__
,
dumy
);
exit_with_status
(
sock
,
buff
);
exit_with_status
(
sock
,
buff
);
}
}
...
@@ -543,7 +539,7 @@ queue_seek__(struct lkt_cmd_args *args)
...
@@ -543,7 +539,7 @@ queue_seek__(struct lkt_cmd_args *args)
fail
(
"Invalid argument, must be only one integer"
);
fail
(
"Invalid argument, must be only one integer"
);
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
fail_if
(
write_socket
_format
(
sock
,
"playid %ld
\n
"
,
id
)
,
"ACK"
)
;
write_socket
(
sock
,
"playid %ld
\n
"
,
id
);
exit_with_status
(
sock
,
buf
);
exit_with_status
(
sock
,
buf
);
}
}
...
@@ -573,8 +569,10 @@ queue_pos__(struct lkt_cmd_args *args)
...
@@ -573,8 +569,10 @@ queue_pos__(struct lkt_cmd_args *args)
FILE
*
sock
=
NULL
;
FILE
*
sock
=
NULL
;
redo:
redo:
sock
=
lkt_connect
();
sock
=
lkt_connect
();
fail_if
(
up
!=
0
&&
write_socket_format
(
sock
,
"playlist %d:%d
\n
"
,
continuation
,
up
),
"ACK"
);
if
(
up
!=
0
)
fail_if
(
up
==
0
&&
write_socket_format
(
sock
,
"playlist %d
\n
"
,
continuation
),
"ACK"
);
write_socket
(
sock
,
"playlist %d:%d
\n
"
,
continuation
,
up
);
else
write_socket
(
sock
,
"playlist %d
\n
"
,
continuation
);
for
(;;)
{
for
(;;)
{
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
...
@@ -622,8 +620,7 @@ queue_list__(struct lkt_cmd_args *args)
...
@@ -622,8 +620,7 @@ queue_list__(struct lkt_cmd_args *args)
/* Get the current pos to get limits for the playlist command. */
/* Get the current pos to get limits for the playlist command. */
sock
=
lkt_connect
();
sock
=
lkt_connect
();
if
(
write_socket
(
sock
,
"status
\n
"
,
sizeof
(
"status
\n
"
)))
write_socket
(
sock
,
"status
\n
"
);
fail
(
"Communication error"
);
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
for
(;;)
{
for
(;;)
{
...
@@ -680,7 +677,7 @@ plt_destroy__(struct lkt_cmd_args *args)
...
@@ -680,7 +677,7 @@ plt_destroy__(struct lkt_cmd_args *args)
fail_if
(
args
->
argc
!=
1
,
"Invalid argument"
);
fail_if
(
args
->
argc
!=
1
,
"Invalid argument"
);
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
char
buff
[
2
];
char
buff
[
2
];
write_socket
_format
(
sock
,
"rm %s
\n
"
,
args
->
argv
[
0
]);
write_socket
(
sock
,
"rm %s
\n
"
,
args
->
argv
[
0
]);
exit_with_status
(
sock
,
buff
);
exit_with_status
(
sock
,
buff
);
}
}
...
@@ -691,7 +688,7 @@ plt_create__(struct lkt_cmd_args *args)
...
@@ -691,7 +688,7 @@ plt_create__(struct lkt_cmd_args *args)
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
char
buff
[
2
];
char
buff
[
2
];
write_socket
_format
(
sock
,
"playlistadd %s
\n
"
,
args
->
argv
[
0
]);
write_socket
(
sock
,
"playlistadd %s
\n
"
,
args
->
argv
[
0
]);
exit_with_status
(
sock
,
buff
);
exit_with_status
(
sock
,
buff
);
}
}
...
@@ -701,15 +698,13 @@ stickers_get__(struct lkt_cmd_args *args)
...
@@ -701,15 +698,13 @@ stickers_get__(struct lkt_cmd_args *args)
char
buff
[
LKT_MESSAGE_MAX
];
char
buff
[
LKT_MESSAGE_MAX
];
FILE
*
sock
;
FILE
*
sock
;
if
(
args
->
argc
==
2
)
if
(
args
->
argc
==
2
)
write_socket_format
(
sock
=
lkt_connect
(),
"sticker get %s %s
\n
"
,
write_socket
(
sock
=
lkt_connect
(),
"sticker get %s %s
\n
"
,
args
->
argv
[
0
],
args
->
argv
[
1
]);
args
->
argv
[
0
],
args
->
argv
[
1
]);
else
if
(
args
->
argc
==
3
)
else
if
(
args
->
argc
==
3
)
write_socket
_format
(
sock
=
lkt_connect
(),
"sticker get %s %s %s
\n
"
,
write_socket
(
sock
=
lkt_connect
(),
"sticker get %s %s %s
\n
"
,
args
->
argv
[
0
],
args
->
argv
[
1
],
args
->
argv
[
0
],
args
->
argv
[
1
],
args
->
argv
[
2
]);
args
->
argv
[
2
]);
else
if
(
args
->
argc
==
5
)
else
if
(
args
->
argc
==
5
)
write_socket_format
(
sock
=
lkt_connect
(),
"sticker get %s %s %s %s %s
\n
"
,
write_socket
(
sock
=
lkt_connect
(),
"sticker get %s %s %s %s %s
\n
"
,
args
->
argv
[
0
],
args
->
argv
[
0
],
args
->
argv
[
1
],
args
->
argv
[
2
],
args
->
argv
[
1
],
args
->
argv
[
2
],
args
->
argv
[
3
],
args
->
argv
[
4
]);
args
->
argv
[
3
],
args
->
argv
[
4
]);
else
else
fail
(
"Invalid argument"
);
fail
(
"Invalid argument"
);
...
@@ -730,7 +725,7 @@ stickers_set__(struct lkt_cmd_args *args)
...
@@ -730,7 +725,7 @@ stickers_set__(struct lkt_cmd_args *args)
fail_if
(
args
->
argc
!=
4
,
"Invalid argument"
);
fail_if
(
args
->
argc
!=
4
,
"Invalid argument"
);
FILE
*
sock
=
lkt_connect
();
FILE
*
sock
=
lkt_connect
();
char
buff
[
2
];
char
buff
[
2
];
write_socket
_format
(
sock
,
"sticker set %s %s %s %s
\n
"
,
args
->
argv
[
0
],
write_socket
(
sock
,
"sticker set %s %s %s %s
\n
"
,
args
->
argv
[
0
],
args
->
argv
[
1
],
args
->
argv
[
2
],
args
->
argv
[
3
]);
args
->
argv
[
1
],
args
->
argv
[
2
],
args
->
argv
[
3
]);
exit_with_status
(
sock
,
buff
);
exit_with_status
(
sock
,
buff
);
}
}
...
@@ -741,10 +736,10 @@ stickers_delete__(struct lkt_cmd_args *args)
...
@@ -741,10 +736,10 @@ stickers_delete__(struct lkt_cmd_args *args)
FILE
*
sock
;
FILE
*
sock
;
char
buff
[
2
];
char
buff
[
2
];
if
(
args
->
argc
==
2
)
if
(
args
->
argc
==
2
)
write_socket
_format
(
sock
=
lkt_connect
(),
"sticker delete %s %s"
,
write_socket
(
sock
=
lkt_connect
(),
"sticker delete %s %s"
,
args
->
argv
[
0
],
args
->
argv
[
1
]);
args
->
argv
[
0
],
args
->
argv
[
1
]);
else
if
(
args
->
argc
==
3
)
else
if
(
args
->
argc
==
3
)
write_socket
_format
(
sock
=
lkt_connect
(),
"sticker delete %s %s %s"
,
write_socket
(
sock
=
lkt_connect
(),
"sticker delete %s %s %s"
,
args
->
argv
[
0
],
args
->
argv
[
1
],
args
->
argv
[
2
]);
args
->
argv
[
0
],
args
->
argv
[
1
],
args
->
argv
[
2
]);
else
else
fail
(
"Invalid argument"
);
fail
(
"Invalid argument"
);
...
@@ -765,10 +760,10 @@ search_with_cmd__(struct lkt_cmd_args *args, const char *cmd)
...
@@ -765,10 +760,10 @@ search_with_cmd__(struct lkt_cmd_args *args, const char *cmd)
redo:
redo:
sock
=
lkt_connect
();
sock
=
lkt_connect
();
write_socket
_format
(
sock
,
"%d %s"
,
continuation
,
cmd
);
write_socket
(
sock
,
"%d %s"
,
continuation
,
cmd
);
for
(
i
=
0
;
i
<
args
->
argc
;
++
i
)
for
(
i
=
0
;
i
<
args
->
argc
;
++
i
)
write_socket
_format
(
sock
,
" %s"
,
args
->
argv
[
i
]);
write_socket
(
sock
,
" %s"
,
args
->
argv
[
i
]);
(
void
)
write_socket
(
sock
,
"
\n
"
,
sizeof
(
"
\n
"
)
/
sizeof
(
char
)
);
write_socket
(
sock
,
"
\n
"
);
for
(;;)
{
for
(;;)
{
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
memset
(
buff
,
0
,
LKT_MESSAGE_MAX
*
sizeof
(
char
));
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter