int main(int argc, char **argv) { char *author; char *title; CGI_varlist *varlist; CGI_varlist *redirect_vars; CGI_value *value; char *reason; cl = clnt_create(PAPER_ADDRESS, PAPERSERVER_PROG, PAPERSERVER_VERS, "tcp"); if (cl == NULL) { // sprintf(reason, "Error creating RPC client %s", strerror(errno)); redirect_vars = CGI_add_var(NULL, "reason", "Error creating RPC client"); printf("Status: 303\nLocation: %s%s%s\n\n", WEB_BASEPHP, "/papererror.php?", CGI_encode_varlist(redirect_vars, NULL)); // perror("Error creating RPC client!"); CGI_free_varlist(redirect_vars); exit(1); } // fputs("Content-type: text/plain\r\n\r\n", stdout); varlist = CGI_get_all("/tmp/cgi-upload-XXXXXX"); author = CGI_lookup(varlist, "author"); title = CGI_lookup(varlist, "title"); value = CGI_lookup_all(varlist, "fileToUpload"); if (value == 0 || value[1] == 0) { redirect_vars = CGI_add_var(NULL, "reason", "No file was uploaded"); printf("Status: 303\nLocation: %s%s%s\n\n", WEB_BASEPHP, "/papererror.php?", CGI_encode_varlist(redirect_vars, NULL)); CGI_free_varlist(redirect_vars); // fputs("No file was uploaded\r\n", stdout); } else { // printf("Author: %s\n Title: %s\n", author, title); // printf("Your file \"%s\" was uploaded to my file \"%s\"\r\n", // value[1], value[0]); add_article(author, title, strdup(value[0]), strdup(value[1])); /* Do something with the file here */ unlink(value[0]); } CGI_free_varlist(varlist); clnt_destroy(cl); return 0; }
int main() { articolo *db=NULL; int num = 0,scelta; float guadagno = 0; do { switch(scelta = menu_iniziale() ) { case 1: db = add_article(db,num); num++; break; case 2: riassunto(db,num); break; case 3: stampa_quantita(db,num); break; case 4: stampa_tutto(db,num); break; case 5: db = vendi(db,num,&guadagno); break; case 6: printf("\n ====== GUADAGNO ======\n" "Guadagno: %f\n",guadagno ); break; case 7: break; default: puts("\n Opzione non valida \n"); }; }while(scelta != 7); free(db); return 0; }
int folder_menu(char *path, int mode) { FILE *folder; register article_header *ah; news_header_buffer dgbuf; char buffer[256]; int more, length, re, menu_cmd, was_raw; memory_marker mem_marker; group_header fake_group; int cc_save; char folder_name[FILENAME], folder_file[FILENAME]; int orig_layout; char *orig_hdr_lines; orig_layout = fmt_linenum; orig_hdr_lines = header_lines; strcpy(folder_name, path); fake_group.group_name = folder_name; fake_group.kill_list = NULL; if (!expand_file_name(folder_file, folder_name, 1)) return ME_NO_REDRAW; fake_group.archive_file = path = folder_file; fake_group.next_group = fake_group.prev_group = NULL; fake_group.group_flag = G_FOLDER | G_FAKED; fake_group.master_flag = 0; fake_group.save_file = NULL; current_group = NULL; init_group(&fake_group); folder = open_file(path, OPEN_READ); if (folder == NULL) { msg("%s not found", path); return ME_NO_REDRAW; } switch (get_folder_type(folder)) { case 0: msg("Reading: %-.65s", path); break; case 1: case 2: msg("Reading %s folder: %-.50s", current_folder_type == 1 ? "mail" : "mmdf", path); break; default: msg("Folder is empty"); fclose(folder); return ME_NO_REDRAW; } rewind(folder); was_raw = no_raw(); s_keyboard = 0; current_group = &fake_group; mark_memory(&mem_marker); ah = alloc_art(); more = 1; while (more && (more = get_digest_article(folder, dgbuf)) >= 0) { if (s_keyboard) break; ah->a_number = 0; ah->flag = A_FOLDER; ah->attr = 0; ah->lines = digest.dg_lines; ah->hpos = digest.dg_hpos; ah->fpos = digest.dg_fpos; ah->lpos = digest.dg_lpos; if (digest.dg_from) { length = pack_name(buffer, digest.dg_from, Name_Length); ah->sender = alloc_str(length); strcpy(ah->sender, buffer); ah->name_length = length; if (mode == 1) fold_string(ah->sender); } else { ah->sender = ""; ah->name_length = 0; } if (digest.dg_subj) { length = pack_subject(buffer, digest.dg_subj, &re, 255); ah->replies = re; ah->subject = alloc_str(length); strcpy(ah->subject, buffer); ah->subj_length = length; if (mode == 1 && length > 1) fold_string(ah->subject + 1); } else { ah->replies = 0; ah->subject = ""; ah->subj_length = 0; } ah->t_stamp = digest.dg_date ? pack_date(digest.dg_date) : 0; add_article(ah); ah = alloc_art(); } fclose(folder); if (s_keyboard) { menu_cmd = ME_NO_REDRAW; } else if (n_articles == 0) { msg("Not a folder (no article header)"); menu_cmd = ME_NO_REDRAW; } else { if (n_articles > 1) { clrdisp(); prompt_line = 2; if (mode == 0 && !dont_sort_folders) sort_articles(-1); else if (mode == 1) { article_number n; for (n = 0; n < n_articles; n++) { ah = articles[n]; if (n == 0) ah->flag |= A_ROOT_ART; else if (strcmp(ah->sender, articles[n - 1]->sender) == 0) articles[n - 1]->flag |= A_NEXT_SAME; else ah->flag |= A_ROOT_ART; } bypass_consolidation = consolidated_manual ? 2 : 1; } else no_sort_articles(); } else no_sort_articles(); cc_save = cancel_count; cancel_count = 0; if (mode == 1) { fmt_linenum = -1; header_lines = "*"; } reenter_menu: ignore_fancy_select = 1; menu_cmd = menu(folder_header); ignore_fancy_select = 0; if (mode == 0 && cancel_count) { register article_number cur; cancel_count = 0; for (cur = 0; cur < n_articles; cur++) { if (articles[cur]->attr == A_CANCEL) cancel_count++; } } if (mode == 0 && cancel_count) { clrdisp(); tprintf("\rFolder: %s\n\rFile: %s\n\n\r", folder_name, folder_file); if (cancel_count == n_articles) tprintf("Cancel all articles and remove folder? "); else tprintf("Remove %d article%s from folder? ", cancel_count, plural((long) cancel_count)); fl; switch (yes(1)) { case 1: tprintf("\n\n"); if (cancel_count == n_articles) { if (unlink(group_path_name) < 0 && nn_truncate(group_path_name, (off_t) 0) < 0) { tprintf("\rCould not unlink %s\n\r", group_path_name); any_key(0); } } else rewrite_folder(); break; case 0: break; default: goto reenter_menu; } } cancel_count = cc_save; } release_memory(&mem_marker); if (fmt_linenum == -1) { fmt_linenum = orig_layout; header_lines = orig_hdr_lines; } if (was_raw) nn_raw(); return menu_cmd; }
void *pthread_handler(void *ptr) { P_socket *data; data = (P_socket *) ptr; struct sockaddr_in addr = *(data->ptr_addr); int sock = data->socket_fd; int len = sizeof(addr); int msg_size; const char *invite_msg = "> "; const char *exit_msg = "Bye-bye!!!|"; char path[SIZE_BUF]; char name[SIZE_STR]; char buffer[SIZE_BUF]; char author[SIZE_STR]; char content[SIZE_CONTENT]; while(strcmp(buffer, ":start")) { bzero(buffer, sizeof(buffer)); if ((msg_size = recvfrom(sock, buffer, sizeof(buffer), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV start message error"); exit(1); } } printf("RECV [%d bytes]: start message '%s'\n", msg_size, buffer); send_content(sock, START_PATH, &addr); strcpy(path, START_PATH); while(1) { if ((msg_size = sendto(sock, invite_msg, strlen(invite_msg), 0, (struct sockaddr*)&addr, sizeof(addr))) < 0) { perror("SEND invitation message error"); exit(1); } printf("SEND [%d bytes]: invitation message '%s'\n", msg_size, invite_msg); bzero(buffer, sizeof(buffer)); if ((msg_size = recvfrom(sock, buffer, sizeof(buffer), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV command error"); exit(1); } printf("RECV [%d bytes]: command '%s'\n", msg_size, buffer); if (!strcmp(buffer, ":exit")) { if ((msg_size = sendto(sock, exit_msg, strlen(exit_msg), 0, (struct sockaddr*)&addr, sizeof(addr))) < 0) { perror("SEND directory content error"); exit(1); } printf("SEND [%d bytes]: directory content '%s'\n", msg_size, exit_msg); break; } if (strcmp(buffer, "find") && strcmp(buffer, "open") && strcmp(buffer, "add")) { send_input_error(sock, &addr); send_content(sock, path, &addr); continue; } send_report(sock, SUCCESS, &addr); if (!strcmp(buffer, "open")) { bzero(path, sizeof(path)); if ((msg_size = recvfrom(sock, path, sizeof(path), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV path to file error"); exit(1); } printf("RECV [%d bytes]: path to file message '%s'\n", msg_size, path); open_file(sock, path, &addr); } if (!strcmp(buffer, "find")) { bzero(author, sizeof(author)); if ((msg_size = recvfrom(sock, author, sizeof(author), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV author to find error"); exit(1); } printf("RECV [%d bytes]: author to find '%s'\n", msg_size, author); find_for_author(sock, path, author, &addr); sendPath_recvReport(sock, path, &addr); } if (!strcmp(buffer, "add")) { bzero(name, sizeof(name)); if ((msg_size = recvfrom(sock, name, sizeof(name), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV name error"); exit(1); } printf("RECV [%d bytes]: name'%s'\n", msg_size, name); char *dir = strdup(path); strcat(path, name); strcat(path, ".txt"); if (check_file_existence(path) < 0) { send_report(sock, UNSUCCESS, &addr); recv_report(sock, &addr); } else { send_report(sock, SUCCESS, &addr); bzero(author, sizeof(author)); if ((msg_size = recvfrom(sock, author, sizeof(author), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV author error"); exit(1); } printf("RECV [%d bytes]: author '%s'\n", msg_size, author); send_report(sock, SUCCESS, &addr); bzero(content, sizeof(content)); if ((msg_size = recvfrom(sock, content, sizeof(content), 0, (struct sockaddr*)&addr, (socklen_t *)&len)) < 0) { perror("RECV content of file error"); exit(1); } printf("RECV [%d bytes]: content of file '%s'\n", msg_size, content); strcat(name, "\n"); strcat(author, "\n\n"); if (add_article(path, name, author, content) < 0) send_report(sock, UNSUCCESS, &addr); else send_report(sock, SUCCESS, &addr); recv_report(sock, &addr); } send_content(sock, dir, &addr); dirname(path); if (path[strlen(path) - 1] != '/') strcat(path, "/"); } } /* int DAGRM_SIZE =16; int NUM_SIZE = 3; char _msg[1024] = "1234567890123456789012345678901234567890123456789012345678901234567890"; char dagrm[DAGRM_SIZE]; char *_ptr = _msg; int num, size = 0; int length = DAGRM_SIZE - NUM_SIZE - sizeof(char); for (num = 0;_ptr <= &_msg[strlen(_msg) - 1];){ memset(dagrm, 0, sizeof(dagrm)); sprintf(dagrm, "%3x", num); if (num == ((strlen(_msg) - 1)/(DAGRM_SIZE - NUM_SIZE - sizeof(char)))) dagrm[0] = '1'; strncat(dagrm, _ptr, length); if ((msg_size = sendto(sock, dagrm, strlen(dagrm), 0, (struct sockaddr*)&addr, sizeof(addr))) < 0) { perror("SEND directory content error"); exit(1); } printf("SEND [%d bytes]: directory content '%s'\n", msg_size, dagrm); if (recv_report(sock,&addr) == 0) continue; _ptr = _ptr + length; size = size + length; num++; }*/ send_msg(sock, "Hello,world!Hello,World!!!", strlen("Hello,world!Hello,World!!!"), 0, (struct sockaddr*)&addr, sizeof(addr)); pthread_exit(0); return 0; }
#include "/d/Empire/islands/reikland.h" inherit I_DRINK; static void create() { string form, color, type; ::create(); form = ({ "small", "strange", "large", "malformed" })[random(4)]; color = ({ "red", "orange", "yellow", "green", "blue", "indigo", "violet"})[random(7)]; type = ({ "potion", "flask", "bottle" })[random(3)]; set_name("potion"); set_short(add_article(form) + " " + color + " " + type); set_long(capitalize(add_article(form)) + " " + type + " filled with a " + color + " liquid."); add_id(({ type, form + " " + type, color + " " + type })); set_heal(200 + random(200)); set_strength(random(25)); set_soft_strength(random(25)); set_value(1500 + random(500)); set_empty_container("bottle"); set_weight(1); }
DWORD WINAPI ClientThread(LPVOID lpParam) { SOCKET sock=(SOCKET)lpParam; int msg_size; const char *invite_msg = "> "; const char *exit_msg = "Bye-bye!!!|"; char path[SIZE_BUF]; char name[SIZE_STR]; char buffer[SIZE_BUF]; char author[SIZE_STR]; char content[SIZE_CONTENT]; while(strcmp(buffer, ":start")) { memset(buffer, 0, sizeof(buffer)); if ((msg_size = recv(sock, buffer, sizeof(buffer), 0)) == SOCKET_ERROR) { printf("Receive :start_msg failed: %d\n", WSAGetLastError()); exit(1); } } buffer[msg_size] = '\0'; send_content(sock, START_PATH); strcpy(path, START_PATH); while(1) { if ((msg_size = send(sock, invite_msg, strlen(invite_msg), 0)) == SOCKET_ERROR) { printf("SEND invitation message error: %d\n", WSAGetLastError()); exit(1); } printf("SEND [%d bytes]: invitation message '%s'\n", msg_size, invite_msg); memset(buffer, 0, sizeof(buffer)); if ((msg_size = recv(sock, buffer, sizeof(buffer), 0)) == SOCKET_ERROR) { printf("RECV command error: %d\n", WSAGetLastError()); exit(1); } printf("RECV [%d bytes]: command '%s'\n", msg_size, buffer); if (!strcmp(buffer, ":exit")) { if ((msg_size = send(sock, exit_msg, strlen(exit_msg), 0)) == SOCKET_ERROR) { printf("SEND directory content error: %d\n", WSAGetLastError()); exit(1); } printf("SEND [%d bytes]: directory content '%s'\n", msg_size, exit_msg); break; } if (strcmp(buffer, "find") && strcmp(buffer, "open") && strcmp(buffer, "add")) { send_input_error(sock); send_content(sock, path); continue; } send_report(sock, SUCCESS); if (!strcmp(buffer, "open")) { memset(path, 0, sizeof(path)); if ((msg_size = recv(sock, path, sizeof(path), 0)) == SOCKET_ERROR) { printf("RECV path to file error: %d\n", WSAGetLastError()); exit(1); } printf("RECV [%d bytes]: path to file message '%s'\n", msg_size, path); open_file(sock, path); } if (!strcmp(buffer, "find")) { memset(author, 0,sizeof(author)); if ((msg_size = recv(sock, author, sizeof(author), 0)) == SOCKET_ERROR) { printf("RECV author to find error: %d\n", WSAGetLastError()); exit(1); } printf("RECV [%d bytes]: author to find '%s'\n", msg_size, author); find_for_author(sock, path, author); sendPath_recvReport(sock, path); } if (!strcmp(buffer, "add")) { memset(name, 0,sizeof(name)); if ((msg_size = recv(sock, name, sizeof(name), 0)) == SOCKET_ERROR) { printf("RECV name error: %d\n", WSAGetLastError()); exit(1); } printf("RECV [%d bytes]: name'%s'\n", msg_size, name); char *dir = strdup(path); strcat(path, name); strcat(path, ".txt"); if (check_file_existence(path) < 0) { send_report(sock, UNSUCCESS); recv_report(sock); } else { send_report(sock, SUCCESS); memset(author,0, sizeof(author)); if ((msg_size = recv(sock, author, sizeof(author), 0)) == SOCKET_ERROR) { printf("RECV author error: %d\n", WSAGetLastError()); exit(1); } printf("RECV [%d bytes]: author '%s'\n", msg_size, author); send_report(sock, SUCCESS); memset(content, 0,sizeof(content)); if ((msg_size = recv(sock, content, sizeof(content), 0)) == SOCKET_ERROR) { printf("RECV content of file error: %d\n", WSAGetLastError()); exit(1); } printf("RECV [%d bytes]: content of file '%s'\n", msg_size, content); strcat(name, "\n"); strcat(author, "\n\n"); if (add_article(path, name, author, content) < 0) send_report(sock, UNSUCCESS); else send_report(sock, SUCCESS); recv_report(sock); } send_content(sock, dir); dirname(path); if (path[strlen(path) - 1] != '/') strcat(path, "/"); } } return 0; }