#include #include #include #include #include #include #include "config.h" #include "chanx.h" /************************************************************************/ /* */ /* */ /************************************************************************/ int post(int s, char *path) { int result = 0; FILE *fp; char *line; char *cp; /* * Send command and get response */ if(so_printf(s, "POST\r\n") < 0) return(-1); if(recv_bline(s, buf) <= 0) return(-1); if (buf[0] != '3') { puts(buf); lprintf("Server error: %s", buf); return(-1); } if((fp = xopen(path, "rt")) != NULL) { line = malloc(512); *line = '.'; result = 1; while(fgets(line + 1, 511, fp)) { if((cp = strchr(line, '\n')) != NULL) *cp = '\0'; if(so_printf(s, "%s\r\n", line + (line[1] != '.')) < 0) { result = -1; break; } } fclose(fp); if(result == 1 && so_printf(s, ".\r\n", line) < 0) result = -1; if(result == 1) { if(recv_bline(s, buf) <= 0) result = -1; else { puts(buf); if (buf[0] != '2') { lprintf("Server error: %s", buf); result = -1; } } } } else lperror(path); return(result); }