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;
}
Exemple #2
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;
}
Exemple #3
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;
}
Exemple #4
0
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;
}
Exemple #5
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);
}
Exemple #6
0
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;
}