4 Copyright (C) 2006-2009 Jonathan Zarate
9 #include "../mssl/mssl.h"
18 int web_getline(char *buffer
, int max
)
20 while (fgets(buffer
, max
, connfp
) == NULL
) {
21 if (errno
!= EINTR
) return 0;
23 // cprintf("%s", buffer);
27 void web_puts(const char *buffer
)
29 web_write(buffer
, strlen(buffer
));
32 void web_putj(const char *buffer
)
36 p
= js_string(buffer
);
43 void web_putj_utf8(const char *buffer
)
47 p
= utf8_to_js_string(buffer
);
54 void web_puth(const char *buffer
)
58 p
= html_string(buffer
);
65 void web_puth_utf8(const char *buffer
)
69 p
= utf8_to_html_string(buffer
);
76 int _web_printf(wofilter_t wof
, const char *format
, ...)
85 if ((b
= malloc(size
)) == NULL
) return 0;
87 va_start(args
, format
);
88 n
= vsnprintf(b
, size
, format
, args
);
116 if (size
> (10 * 1024)) return 0;
120 int web_write(const char *buffer
, int len
)
126 r
= fwrite(buffer
, 1, n
, connfp
);
127 if ((r
== 0) && (errno
!= EINTR
)) return -1;
134 int web_read(void *buffer
, int len
)
137 if (len
<= 0) return 0;
138 while ((r
= fread(buffer
, 1, len
, connfp
)) == 0) {
139 if (errno
!= EINTR
) return -1;
144 int web_read_x(void *buffer
, int len
)
149 n
= web_read(buffer
, len
);
150 if (n
<= 0) return len
;
163 if ((n
= web_read(buf
, (max
< sizeof(buf
)) ? max
: sizeof(buf
))) <= 0) return 0;
171 return (fflush(connfp
) == 0);
178 if ((connfp
= ssl_server_fopen(connfd
)) != NULL
) return 1;
182 if ((connfp
= fdopen(connfd
, "r+")) != NULL
) return 1;
189 if (connfp
!= NULL
) {
195 // shutdown(connfd, SHUT_RDWR);
203 // --------------------------------------------------------------------------------------------------------------------
206 static void _web_putfile(FILE *f
, wofilter_t wof
)
211 while ((nr
= fread(buf
, 1, sizeof(buf
) - 1, f
)) > 0) {
227 int web_putfile(const char *fname
, wofilter_t wof
)
231 if ((f
= fopen(fname
, "r")) != NULL
) {
232 _web_putfile(f
, wof
);
239 int web_pipecmd(const char *cmd
, wofilter_t wof
)
243 if ((f
= popen(cmd
, "r")) != NULL
) {
244 _web_putfile(f
, wof
);