mu: smaller string chunkss for server on Cygwin
Add check for CYGWIN and in this case only print out 64K-sized string-chunks from mu server. Fixes issue #764. fixup
This commit is contained in:
@ -98,13 +98,18 @@ install_sig_handler (void)
|
|||||||
static void G_GNUC_PRINTF(1, 2)
|
static void G_GNUC_PRINTF(1, 2)
|
||||||
print_expr (const char* frm, ...)
|
print_expr (const char* frm, ...)
|
||||||
{
|
{
|
||||||
char *expr;
|
char *expr, *expr_orig;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
ssize_t rv;
|
ssize_t rv;
|
||||||
size_t exprlen, lenlen;
|
size_t exprlen, lenlen;
|
||||||
char cookie[16];
|
char cookie[16];
|
||||||
static int outfd = 0;
|
static int outfd = 0;
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__ )&& !defined (_WIN32)
|
||||||
|
const size_t writestep = 4096 * 16;
|
||||||
|
size_t bytestowrite = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (outfd == 0)
|
if (outfd == 0)
|
||||||
outfd = fileno (stdout);
|
outfd = fileno (stdout);
|
||||||
|
|
||||||
@ -127,8 +132,19 @@ print_expr (const char* frm, ...)
|
|||||||
*/
|
*/
|
||||||
rv = write (outfd, cookie, lenlen + 2);
|
rv = write (outfd, cookie, lenlen + 2);
|
||||||
if (rv != -1) {
|
if (rv != -1) {
|
||||||
|
expr_orig = expr;
|
||||||
|
#if defined (__CYGWIN__) && !defined(_WIN32)
|
||||||
|
/* CYGWIN doesn't like big packets */
|
||||||
|
while (exprlen > 0) {
|
||||||
|
bytestowrite = exprlen > writestep ? writestep : exprlen;
|
||||||
|
rv = write(outfd, expr, bytestowrite);
|
||||||
|
expr += bytestowrite;
|
||||||
|
exprlen -= bytestowrite;
|
||||||
|
}
|
||||||
|
#else
|
||||||
rv = write (outfd, expr, exprlen);
|
rv = write (outfd, expr, exprlen);
|
||||||
g_free (expr);
|
#endif
|
||||||
|
g_free (expr_orig);
|
||||||
}
|
}
|
||||||
if (rv != -1)
|
if (rv != -1)
|
||||||
rv = write (outfd, "\n", 1);
|
rv = write (outfd, "\n", 1);
|
||||||
@ -976,7 +992,7 @@ cmd_guile (ServerContext *ctx, GHashTable *args, GError **err)
|
|||||||
const char *eval;
|
const char *eval;
|
||||||
|
|
||||||
eval = get_string_from_args (args, "eval", TRUE, NULL);
|
eval = get_string_from_args (args, "eval", TRUE, NULL);
|
||||||
|
|
||||||
if (!eval) {
|
if (!eval) {
|
||||||
print_error (MU_ERROR_IN_PARAMETERS, "guile: expected: 'eval'");
|
print_error (MU_ERROR_IN_PARAMETERS, "guile: expected: 'eval'");
|
||||||
return MU_OK;
|
return MU_OK;
|
||||||
|
|||||||
Reference in New Issue
Block a user