Example #1
0
int
main(int argc, char *argv[])
{
	int sockfd;
    int retcode = EXIT_SUCCESS;


    // read program options
    if (get_options(argc, argv, &my_opt) == 0) {
        print_usage(my_opt.progname);
        exit(EXIT_FAILURE);
    } /* end if */

    // set the time zone (TZ) to GMT in order to
    // ignore any other local time zone that would
    // interfere with correct time string parsing
    setenv("TZ", "GMT", 1);
    tzset();
  /*  printf("Server Port: %d\n", my_opt.server_port);
    //printf("Server Address: %d\n", my_opt.server_addr);
    printf("Progname: %s\n", my_opt.progname);
    printf("Root Dir: %s\n", my_opt.root_dir);
    printf("Log File: %s\n", my_opt.log_filename); */

    // do some checks and initialisations...
    open_logfile(&my_opt);
    check_root_dir(&my_opt);
    install_signal_handlers();
    init_logging_semaphore();

    // TODO: start the server and handle clients...

    // here, as an example, show how to interact with the
    // condition set by the signal handler above
    //printf("[%d] Starting server '%s'...\n", getpid(), my_opt.progname);
    server_running = true;
    prog_options_t *opt = &my_opt;
    struct sockaddr_in* struct_port = (struct sockaddr_in*) opt->server_addr->ai_addr;
    sockfd = server_init(ntohs(struct_port->sin_port));

    //printf("Port: %i \n", sockfd);
    while(server_running) {

    	client_connection(sockfd);
        //pause();
    } /* end while */

    printf("[%d] Good Bye...\n", getpid());
    exit(retcode);
} /* end of main */
Example #2
0
int
main(int argc, char **argv)
{
#ifdef HOST
	hostcompat_init(argc, argv);
#endif

	if (argc!=2) {
		errx(EXIT_USAGE, "Usage: sfsck device/diskfile");
	}

	assert(sizeof(struct sfs_super)==SFS_BLOCKSIZE);
	assert(sizeof(struct sfs_inode)==SFS_BLOCKSIZE);
	assert(SFS_BLOCKSIZE % sizeof(struct sfs_dir) == 0);

	opendisk(argv[1]);

	check_sb();
	check_root_dir();
	check_bitmap();
	adjust_filelinks();

	closedisk();

	warnx("%lu blocks used (of %lu); %lu directories; %lu files",
	      count_blocks, (unsigned long) nblocks, count_dirs, count_files);

	switch (badness) {
	    case EXIT_USAGE:
	    case EXIT_FATAL:
	    default:
		/* not supposed to happen here */
		assert(0);
		break;
	    case EXIT_UNRECOV:
		warnx("WARNING - unrecoverable errors. Maybe try again?");
		break;
	    case EXIT_RECOV:
		warnx("Caution - filesystem modified. Run again for luck.");
		break;
	    case EXIT_CLEAN:
		break;
	}

	return badness;
}
Example #3
0
int
main(int argc, char *argv[])
{
    int retcode = EXIT_SUCCESS;
    prog_options_t my_opt;

    // read program options
    if (get_options(argc, argv, &my_opt) == 0) {
        print_usage(my_opt.progname);
        exit(EXIT_FAILURE);
    } /* end if */

    // set the time zone (TZ) to GMT in order to
    // ignore any other local time zone that would
    // interfere with correct time string parsing
    setenv("TZ", "GMT", 1);
    tzset();

    // do some checks and initialisations...
    open_logfile(&my_opt);
    check_root_dir(&my_opt);
    install_signal_handlers();
    init_logging_semaphore();
    
    // get root_dir to handle it later in child process
    char* root_dir = my_opt.root_dir;

    // start the server and create socket
    printf("[%d] Starting server '%s'...\n", getpid(), my_opt.progname);
    int accepting_socket = passive_tcp(my_opt.server_port, 5);
    struct sockaddr_in from_client;
    
    server_running = true;
    while(server_running) {
        socklen_t from_client_len = sizeof(from_client);
        
        // Accept new Client
        int listening_socket = accept(accepting_socket, (struct sockaddr *) &from_client, &from_client_len);
        
        accept_client(accepting_socket, listening_socket, root_dir);
        
    } /* end while */

    printf("[%d] Good Bye...\n", getpid());
    exit(retcode);
} /* end of main */
Example #4
0
int
main(int argc, char *argv[])
{
    int retcode = EXIT_SUCCESS;
    prog_options_t my_opt;

    // read program options
    if (get_options(argc, argv, &my_opt) == 0) {
        print_usage(my_opt.progname);
        exit(EXIT_FAILURE);
    } /* end if */

    // set the time zone (TZ) to GMT in order to
    // ignore any other local time zone that would
    // interfere with correct time string parsing
    setenv("TZ", "GMT", 1);
    tzset();

    // do some checks and initialisations...
    open_logfile(&my_opt);
    check_root_dir(&my_opt);
    install_signal_handlers();
    init_logging_semaphore();

    // get root_dir to handle it later in child process
    char* root_dir = my_opt.root_dir;
    
    // start the server and create socket
    print_log("Starting server '%s'...\n", my_opt.progname);
    int accepting_socket = passive_tcp(my_opt.server_port, 5);
    if (accepting_socket < 0){
        err_print("Error when opening accepting socket!");
        exit(-1);
    }
    struct sockaddr_in from_client;
    
    int req_no = 0;
    server_running = true;
    while(server_running) {
        socklen_t from_client_len = sizeof(from_client);
        int listening_socket = accept(accepting_socket, (struct sockaddr *) &from_client, &from_client_len);
        
        if (listening_socket >= 0){ /* Accept was ok */
            ++req_no;
            pid_t pid = fork();
            if (pid == 0) 
            { /* Child Process */
                print_log("Process created to handle new request #%d\n", req_no);
                close(accepting_socket);            
                handle_client(listening_socket, root_dir);
                exit(0);
            } 
            else if (pid > 0) 
            { /* Parent Process */
                close(listening_socket);
            } 
            else 
            { /* Fork Failed */
                err_print("Could not fork for new request!");
                exit(-1);
            }
        } /*else {
            print_log("Accept failed!\n");
        }   */   
    } /* end while */

    printf("[%d] Good Bye...\n", getpid());
    exit(retcode);
} /* end of main */