char * replyify (synopsis * syn, char *buf) { char *newbuf; char tbuf[1024]; void *list; int s = 0, x = 0, len; len = strlen (buf); list = ll_newlist (); snprintf (tbuf, strlen (syn->sender) + 8, "%s said:\n", syn->sender); ll_addnode (list, tbuf); while (x < len) { if (buf[x] == '\n') { snprintf (tbuf, x - s + 4, "> %s\n", buf + s); ll_addnode (list, tbuf); memset (tbuf, 0, 1024); s = x + 1; } x++; } snprintf (tbuf, strlen (getenv ("HOME")) + strlen ("/.signature") + 1, "%s/.signature", getenv ("HOME")); printf ("tbuf: %s\n", tbuf); list = ll_append (list, read_file_to_list (tbuf)); free (buf); newbuf = stringinate (list); ll_clearlist (list); return newbuf; }
// -------------------- // main // -------------------- int main(int argc, char *argv[]) { int ret = 0; if (!open_log(get_log_filename())) { perror("Open log error"); return 1; } write_log(1); if (argc != 3 && argc != 4) { usage(); write_log(9); ret = 1; goto ARG_ERROR; } simple_list *host_list = read_file_to_list(argv[HOSTFILE_INDEX]); if (host_list == NULL) { if (errno == ENOENT) write_log(4, argv[HOSTFILE_INDEX]); else write_log(5, argv[HOSTFILE_INDEX]); ret = 2; goto OPEN_HOST_ERROR; } simple_list *sql_list = read_file_to_list(argv[SQLFILE_INDEX]); if (sql_list == NULL) { if (errno == ENOENT) write_log(4, argv[SQLFILE_INDEX]); else write_log(5, argv[SQLFILE_INDEX]); ret = 3; goto OPEN_SQL_ERROR; } if (argc == 4) { g_commit_per_execution = atoi(argv[COMMIT_PER_EXECUTION_INDEX]); } sql_connections *connections = sql_connections_new(host_list); if (connections) { do { if (sql_connections_execute(connections, sql_list) != 0) { sql_connections_execute_rollback(connections); ret = 5; break; } if (sql_connections_commit(connections, argv[2]) != 0) { sql_connections_commit_rollback(connections); ret = 6; break; } } while(0); sql_connections_delete(connections); } else { ret = 4; } OPEN_SQL_ERROR: simple_list_delete_string(sql_list); OPEN_HOST_ERROR: simple_list_delete_string(host_list); ARG_ERROR: if (ret == 0) write_log(3); else write_log(8); close_log(); return ret; }