Changeset 2624


Ignore:
Timestamp:
08/01/08 15:44:49 (5 years ago)
Author:
pterjan
Message:
  • Move all server creatio ninto server.c
Location:
neercs/trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/main.c

    r2614 r2624  
    332332    if(!attach) 
    333333    { 
    334         pid_t pid; 
    335         char * sess; 
    336  
    337         pid = fork(); 
    338         if(pid < 0) 
    339         { 
    340             fprintf(stderr, "Failed to create child process\n"); 
    341             goto end; 
    342         } 
    343         if(pid == 0) 
    344         { 
    345             int fd; 
    346             close(0); 
    347             close(1); 
    348             close(2); 
    349             fd = open("/dev/null", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 
    350             dup2(fd, 0); 
    351 #ifndef DEBUG 
    352             dup2(fd, 1); 
    353             dup2(fd, 2); 
    354             if (fd > 2) 
    355                 close(fd); 
    356 #else 
    357             if(fd != 0) 
    358                 close(fd); 
    359             fd = open("/tmp/log.txt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 
    360             dup2(fd, 1); 
    361             dup2(fd, 2); 
    362             if (fd > 2) 
    363                 close(fd); 
    364 #endif 
    365             setsid(); 
    366             return server_main(to_grab, to_start, screen_list); 
    367         } 
    368         create_socket(screen_list, SOCK_CLIENT); 
    369         while((sess = connect_socket(screen_list, SOCK_SERVER)) == NULL) 
    370             usleep(100); 
    371         free(sess); 
    372  
    373         /* Create main canvas and associated caca window */ 
    374         screen_list->cv = cucul_create_canvas(0, 0); 
    375         screen_list->dp = caca_create_display(screen_list->cv); 
    376         if(!screen_list->dp) 
    377             goto end; 
    378         caca_set_cursor(screen_list->dp, 1); 
    379  
    380         request_attach(screen_list); 
     334        if(start_server(to_grab, to_start, screen_list)) 
     335            goto end; 
    381336    } 
    382337 
  • neercs/trunk/src/neercs.h

    r2614 r2624  
    228228char * connect_socket(struct screen_list* screen_list, enum socket_type socktype); 
    229229char ** list_sockets(char *socket_dir, char *session_name); 
    230 int server_main(int *to_grab, char **to_start, struct screen_list *screen_list); 
     230int start_server(int *to_grab, char **to_start, struct screen_list *screen_list); 
    231231int send_event(caca_event_t ev, struct screen_list* screen_list); 
    232232 
  • neercs/trunk/src/server.c

    r2623 r2624  
    106106} 
    107107 
    108 int server_main(int *to_grab, char **to_start, struct screen_list *screen_list) 
     108static int server_main(int *to_grab, char **to_start, struct screen_list *screen_list) 
    109109{ 
    110110    int i; 
     
    390390} 
    391391 
     392int start_server(int *to_grab, char **to_start, struct screen_list *screen_list) 
     393{ 
     394    pid_t pid; 
     395    char * sess; 
     396 
     397    pid = fork(); 
     398    if(pid < 0) 
     399    { 
     400        fprintf(stderr, "Failed to create child process\n"); 
     401        return 1; 
     402    } 
     403    if(pid == 0) 
     404    { 
     405        int fd; 
     406        close(0); 
     407        close(1); 
     408        close(2); 
     409        fd = open("/dev/null", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 
     410        dup2(fd, 0); 
     411#ifndef DEBUG 
     412        dup2(fd, 1); 
     413        dup2(fd, 2); 
     414        if (fd > 2) 
     415            close(fd); 
     416#else 
     417        if(fd != 0) 
     418            close(fd); 
     419        fd = open("/tmp/log.txt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 
     420        dup2(fd, 1); 
     421        dup2(fd, 2); 
     422        if (fd > 2) 
     423            close(fd); 
     424#endif 
     425        setsid(); 
     426        return server_main(to_grab, to_start, screen_list); 
     427    } 
     428    create_socket(screen_list, SOCK_CLIENT); 
     429    while((sess = connect_socket(screen_list, SOCK_SERVER)) == NULL) 
     430        usleep(100); 
     431    free(sess); 
     432 
     433    /* Create main canvas and associated caca window */ 
     434    screen_list->cv = cucul_create_canvas(0, 0); 
     435    screen_list->dp = caca_create_display(screen_list->cv); 
     436    if(!screen_list->dp) 
     437        return 1; 
     438    caca_set_cursor(screen_list->dp, 1); 
     439 
     440    request_attach(screen_list); 
     441 
     442    return 0; 
     443} 
     444 
    392445long long get_us(void) 
    393446{ 
Note: See TracChangeset for help on using the changeset viewer.