#else
if ((fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)) > -1) {
#endif
- int wrote;
- wrote = write(fd, json_text, (unsigned) strlen(json_text));
- close(fd);
- fd = -1;
- if(wrote < 0) {
+ switch_size_t json_len = strlen(json_text);
+ switch_ssize_t wrote = 0, x;
+ do { x = write(fd, json_text, json_len);
+ } while (!(x<0) && json_len > (wrote += x));
+ close(fd); fd = -1;
+ if (x < 0) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s]\n",path);
+ if (0 > unlink(path))
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error unlinking [%s]\n",path);
}
} else {
char ebuf[512] = { 0 };