mirror of
https://github.com/weechat/weechat.git
synced 2026-07-05 01:03:14 +02:00
Fix data sent to callback of hook_process, improve hook_process by using buffer
Fix: some data was sometimes missing (not sent to callback). Improvement: use a 64KB buffer for child output and send data to callback only when buffer is full.
This commit is contained in:
@@ -6165,6 +6165,17 @@ Return value:
|
||||
|
||||
* pointer to new hook, NULL if error occured
|
||||
|
||||
[NOTE]
|
||||
Buffer size for sending data to callback is 64KB (there are 2 buffers: one for
|
||||
stdout and one for stderr).
|
||||
If output from child process (stdout or stderr) is longer than 64KB, callback
|
||||
will be called more than one time.
|
||||
|
||||
[IMPORTANT]
|
||||
Even if most of times your callback is called only once, you must ensure that
|
||||
many calls to callback are ok in your code: you must concatenate data issued by
|
||||
many calls and use data only when return code is nonnegative.
|
||||
|
||||
C example:
|
||||
|
||||
[source,C]
|
||||
|
||||
@@ -6242,6 +6242,18 @@ Valeur de retour :
|
||||
|
||||
* pointeur vers le nouveau "hook", NULL en cas d'erreur
|
||||
|
||||
[NOTE]
|
||||
La taille du tampon pour l'envoi des données au "callback" est de 64 Ko (il y a
|
||||
2 tampons: un pour stdout et un pour stderr).
|
||||
Si la sortie du processus fils (stdout ou stderr) est plus longue que 64 Ko, le
|
||||
"callback" sera appelé plusieurs fois.
|
||||
|
||||
[IMPORTANT]
|
||||
Même si la plupart du temps le "callback" n'est appelé qu'une seule fois, vous
|
||||
devez vous assurer que plusieurs appels au "callback" sont ok dans votre code :
|
||||
vous devez concaténer les données issues de plusieurs appels et n'utiliser les
|
||||
données que lorsque le code retour est positif ou nul.
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,C]
|
||||
|
||||
@@ -6217,6 +6217,19 @@ Valore restituito:
|
||||
|
||||
* puntatore al nuovo hook, NULL in caso di errore
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Buffer size for sending data to callback is 64KB (there are 2 buffers: one for
|
||||
stdout and one for stderr).
|
||||
If output from child process (stdout or stderr) is longer than 64KB, callback
|
||||
will be called more than one time.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[IMPORTANT]
|
||||
Even if most of times your callback is called only once, you must ensure that
|
||||
many calls to callback are ok in your code: you must concatenate data issued by
|
||||
many calls and use data only when return code is nonnegative.
|
||||
|
||||
Esempio in C:
|
||||
|
||||
[source,C]
|
||||
|
||||
Reference in New Issue
Block a user