Changeset 5ebff60 for unix.c


Ignore:
Timestamp:
2015-02-20T22:50:54Z (6 years ago)
Author:
dequis <dx@…>
Branches:
master
Children:
0b9daac, 3d45471, 7733b8c
Parents:
af359b4
git-author:
Indent <please@…> (19-02-15 05:47:20)
git-committer:
dequis <dx@…> (20-02-15 22:50:54)
Message:

Reindent everything to K&R style with tabs

Used uncrustify, with the configuration file in ./doc/uncrustify.cfg

Commit author set to "Indent <please@…>" so that it's easier to
skip while doing git blame.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • unix.c

    raf359b4 r5ebff60  
    1   /********************************************************************\
     1/********************************************************************\
    22  * BitlBee -- An IRC to other IM-networks gateway                     *
    33  *                                                                    *
     
    4646#endif
    4747
    48 global_t global;        /* Against global namespace pollution */
     48global_t global;        /* Against global namespace pollution */
    4949
    5050static int signal_shutdown_pipe[2] = { -1, -1 };
    51 static void sighandler_shutdown( int signal );
    52 static void sighandler_crash( int signal );
    53 
    54 static int crypt_main( int argc, char *argv[] );
    55 
    56 int main( int argc, char *argv[] )
     51static void sighandler_shutdown(int signal);
     52static void sighandler_crash(int signal);
     53
     54static int crypt_main(int argc, char *argv[]);
     55
     56int main(int argc, char *argv[])
    5757{
    5858        int i = 0;
    5959        char *old_cwd = NULL;
    6060        struct sigaction sig, old;
    61        
     61
    6262        /* Required to make iconv to ASCII//TRANSLIT work. This makes BitlBee
    6363           system-locale-sensitive. :-( */
    64         setlocale( LC_CTYPE, "" );
    65        
    66         if( argc > 1 && strcmp( argv[1], "-x" ) == 0 )
    67                 return crypt_main( argc, argv );
    68        
     64        setlocale(LC_CTYPE, "");
     65
     66        if (argc > 1 && strcmp(argv[1], "-x") == 0) {
     67                return crypt_main(argc, argv);
     68        }
     69
    6970        log_init();
    70        
    71         global.conf_file = g_strdup( CONF_FILE_DEF );
    72         global.conf = conf_load( argc, argv );
    73         if( global.conf == NULL )
    74                 return( 1 );
    75        
     71
     72        global.conf_file = g_strdup(CONF_FILE_DEF);
     73        global.conf = conf_load(argc, argv);
     74        if (global.conf == NULL) {
     75                return(1);
     76        }
     77
    7678        b_main_init();
    77        
     79
    7880        /* libpurple doesn't like fork()s after initializing itself, so if
    7981           we use it, do this init a little later (in case we're running in
     
    8284        nogaim_init();
    8385#endif
    84        
     86
    8587#ifdef OTR_BI
    86         otr_init();
     88        otr_init();
    8789#endif
    88        
    89         global.helpfile = g_strdup( HELP_FILE );
    90         if( help_init( &global.help, global.helpfile ) == NULL )
    91                 log_message( LOGLVL_WARNING, "Error opening helpfile %s.", HELP_FILE );
    92 
    93         global.storage = storage_init( global.conf->primary_storage, global.conf->migrate_storage );
    94         if( global.storage == NULL )
    95         {
    96                 log_message( LOGLVL_ERROR, "Unable to load storage backend '%s'", global.conf->primary_storage );
    97                 return( 1 );
    98         }
    99        
    100         if( global.conf->runmode == RUNMODE_INETD )
    101         {
    102                 log_link( LOGLVL_ERROR, LOGOUTPUT_IRC );
    103                 log_link( LOGLVL_WARNING, LOGOUTPUT_IRC );
    104        
     90
     91        global.helpfile = g_strdup(HELP_FILE);
     92        if (help_init(&global.help, global.helpfile) == NULL) {
     93                log_message(LOGLVL_WARNING, "Error opening helpfile %s.", HELP_FILE);
     94        }
     95
     96        global.storage = storage_init(global.conf->primary_storage, global.conf->migrate_storage);
     97        if (global.storage == NULL) {
     98                log_message(LOGLVL_ERROR, "Unable to load storage backend '%s'", global.conf->primary_storage);
     99                return(1);
     100        }
     101
     102        if (global.conf->runmode == RUNMODE_INETD) {
     103                log_link(LOGLVL_ERROR, LOGOUTPUT_IRC);
     104                log_link(LOGLVL_WARNING, LOGOUTPUT_IRC);
     105
    105106                i = bitlbee_inetd_init();
    106                 log_message( LOGLVL_INFO, "%s %s starting in inetd mode.", PACKAGE, BITLBEE_VERSION );
    107 
    108         }
    109         else if( global.conf->runmode == RUNMODE_DAEMON )
    110         {
    111                 log_link( LOGLVL_ERROR, LOGOUTPUT_CONSOLE );
    112                 log_link( LOGLVL_WARNING, LOGOUTPUT_CONSOLE );
     107                log_message(LOGLVL_INFO, "%s %s starting in inetd mode.", PACKAGE, BITLBEE_VERSION);
     108
     109        } else if (global.conf->runmode == RUNMODE_DAEMON) {
     110                log_link(LOGLVL_ERROR, LOGOUTPUT_CONSOLE);
     111                log_link(LOGLVL_WARNING, LOGOUTPUT_CONSOLE);
    113112
    114113                i = bitlbee_daemon_init();
    115                 log_message( LOGLVL_INFO, "%s %s starting in daemon mode.", PACKAGE, BITLBEE_VERSION );
    116         }
    117         else if( global.conf->runmode == RUNMODE_FORKDAEMON )
    118         {
    119                 log_link( LOGLVL_ERROR, LOGOUTPUT_CONSOLE );
    120                 log_link( LOGLVL_WARNING, LOGOUTPUT_CONSOLE );
     114                log_message(LOGLVL_INFO, "%s %s starting in daemon mode.", PACKAGE, BITLBEE_VERSION);
     115        } else if (global.conf->runmode == RUNMODE_FORKDAEMON) {
     116                log_link(LOGLVL_ERROR, LOGOUTPUT_CONSOLE);
     117                log_link(LOGLVL_WARNING, LOGOUTPUT_CONSOLE);
    121118
    122119                /* In case the operator requests a restart, we need this. */
    123                 old_cwd = g_malloc( 256 );
    124                 if( getcwd( old_cwd, 255 ) == NULL )
    125                 {
    126                         log_message( LOGLVL_WARNING, "Could not save current directory: %s", strerror( errno ) );
    127                         g_free( old_cwd );
     120                old_cwd = g_malloc(256);
     121                if (getcwd(old_cwd, 255) == NULL) {
     122                        log_message(LOGLVL_WARNING, "Could not save current directory: %s", strerror(errno));
     123                        g_free(old_cwd);
    128124                        old_cwd = NULL;
    129125                }
    130                
     126
    131127                i = bitlbee_daemon_init();
    132                 log_message( LOGLVL_INFO, "%s %s starting in forking daemon mode.", PACKAGE, BITLBEE_VERSION );
    133         }
    134         if( i != 0 )
    135                 return( i );
    136        
    137         if( ( global.conf->user && *global.conf->user ) &&
    138             ( global.conf->runmode == RUNMODE_DAEMON ||
    139               global.conf->runmode == RUNMODE_FORKDAEMON ) &&
    140             ( !getuid() || !geteuid() ) )
    141         {
     128                log_message(LOGLVL_INFO, "%s %s starting in forking daemon mode.", PACKAGE, BITLBEE_VERSION);
     129        }
     130        if (i != 0) {
     131                return(i);
     132        }
     133
     134        if ((global.conf->user && *global.conf->user) &&
     135            (global.conf->runmode == RUNMODE_DAEMON ||
     136             global.conf->runmode == RUNMODE_FORKDAEMON) &&
     137            (!getuid() || !geteuid())) {
    142138                struct passwd *pw = NULL;
    143                 pw = getpwnam( global.conf->user );
    144                 if( pw )
    145                 {
    146                         initgroups( global.conf->user, pw->pw_gid );
    147                         setgid( pw->pw_gid );
    148                         setuid( pw->pw_uid );
     139                pw = getpwnam(global.conf->user);
     140                if (pw) {
     141                        initgroups(global.conf->user, pw->pw_gid);
     142                        setgid(pw->pw_gid);
     143                        setuid(pw->pw_uid);
     144                } else {
     145                        log_message(LOGLVL_WARNING, "Failed to look up user %s.", global.conf->user);
    149146                }
    150                 else
    151                 {
    152                         log_message( LOGLVL_WARNING, "Failed to look up user %s.", global.conf->user );
    153                 }
    154         }
    155        
     147        }
     148
    156149        /* Catch some signals to tell the user what's happening before quitting */
    157         memset( &sig, 0, sizeof( sig ) );
     150        memset(&sig, 0, sizeof(sig));
    158151        sig.sa_handler = SIG_IGN;
    159         sigaction( SIGCHLD, &sig, &old );
    160         sigaction( SIGPIPE, &sig, &old );
     152        sigaction(SIGCHLD, &sig, &old);
     153        sigaction(SIGPIPE, &sig, &old);
    161154        sig.sa_flags = SA_RESETHAND;
    162155        sig.sa_handler = sighandler_crash;
    163         sigaction( SIGSEGV, &sig, &old );
     156        sigaction(SIGSEGV, &sig, &old);
    164157
    165158        /* Use a pipe for SIGTERM/SIGINT so the actual signal handler doesn't do anything unsafe */
    166         if ( pipe( signal_shutdown_pipe ) == 0 ) {
    167                 b_input_add( signal_shutdown_pipe[0], B_EV_IO_READ, bitlbee_shutdown, NULL );
     159        if (pipe(signal_shutdown_pipe) == 0) {
     160                b_input_add(signal_shutdown_pipe[0], B_EV_IO_READ, bitlbee_shutdown, NULL);
    168161                sig.sa_handler = sighandler_shutdown;
    169                 sigaction( SIGINT, &sig, &old );
    170                 sigaction( SIGTERM, &sig, &old );
    171         }
    172        
    173         if( !getuid() || !geteuid() )
    174                 log_message( LOGLVL_WARNING, "BitlBee is running with root privileges. Why?" );
    175        
     162                sigaction(SIGINT, &sig, &old);
     163                sigaction(SIGTERM, &sig, &old);
     164        }
     165
     166        if (!getuid() || !geteuid()) {
     167                log_message(LOGLVL_WARNING, "BitlBee is running with root privileges. Why?");
     168        }
     169
    176170        b_main_run();
    177        
     171
    178172        /* Mainly good for restarting, to make sure we close the help.txt fd. */
    179         help_free( &global.help );
    180        
    181         if( global.restart )
    182         {
     173        help_free(&global.help);
     174
     175        if (global.restart) {
    183176                char *fn = ipc_master_save_state();
    184177                char *env;
    185                
    186                 env = g_strdup_printf( "_BITLBEE_RESTART_STATE=%s", fn );
    187                 putenv( env );
    188                 g_free( fn );
     178
     179                env = g_strdup_printf("_BITLBEE_RESTART_STATE=%s", fn);
     180                putenv(env);
     181                g_free(fn);
    189182                /* Looks like env should *not* be freed here as putenv
    190183                   doesn't make a copy. Odd. */
    191                
    192                 i = chdir( old_cwd );
    193                 close( global.listen_socket );
    194                
    195                 if( execv( argv[0], argv ) == -1 )
     184
     185                i = chdir(old_cwd);
     186                close(global.listen_socket);
     187
     188                if (execv(argv[0], argv) == -1) {
    196189                        /* Apparently the execve() failed, so let's just
    197190                           jump back into our own/current main(). */
    198191                        /* Need more cleanup code to make this work. */
    199192                        return 1; /* main( argc, argv ); */
    200         }
    201        
    202         return( 0 );
    203 }
    204 
    205 static int crypt_main( int argc, char *argv[] )
     193                }
     194        }
     195
     196        return(0);
     197}
     198
     199static int crypt_main(int argc, char *argv[])
    206200{
    207201        int pass_len;
    208202        unsigned char *pass_cr, *pass_cl;
    209        
    210         if( argc < 4 || ( strcmp( argv[2], "hash" ) != 0 &&
    211                           strcmp( argv[2], "unhash" ) != 0 && argc < 5 ) )
    212         {
    213                 printf( "Supported:\n"
    214                         "  %s -x enc <key> <cleartext password>\n"
    215                         "  %s -x dec <key> <encrypted password>\n"
    216                         "  %s -x hash <cleartext password>\n"
    217                         "  %s -x unhash <hashed password>\n"
    218                         "  %s -x chkhash <hashed password> <cleartext password>\n",
    219                         argv[0], argv[0], argv[0], argv[0], argv[0] );
    220         }
    221         else if( strcmp( argv[2], "enc" ) == 0 )
    222         {
    223                 pass_len = arc_encode( argv[4], strlen( argv[4] ), (unsigned char**) &pass_cr, argv[3], 12 );
    224                 printf( "%s\n", base64_encode( pass_cr, pass_len ) );
    225         }
    226         else if( strcmp( argv[2], "dec" ) == 0 )
    227         {
    228                 pass_len = base64_decode( argv[4], (unsigned char**) &pass_cr );
    229                 arc_decode( pass_cr, pass_len, (char**) &pass_cl, argv[3] );
    230                 printf( "%s\n", pass_cl );
    231         }
    232         else if( strcmp( argv[2], "hash" ) == 0 )
    233         {
     203
     204        if (argc < 4 || (strcmp(argv[2], "hash") != 0 &&
     205                         strcmp(argv[2], "unhash") != 0 && argc < 5)) {
     206                printf("Supported:\n"
     207                       "  %s -x enc <key> <cleartext password>\n"
     208                       "  %s -x dec <key> <encrypted password>\n"
     209                       "  %s -x hash <cleartext password>\n"
     210                       "  %s -x unhash <hashed password>\n"
     211                       "  %s -x chkhash <hashed password> <cleartext password>\n",
     212                       argv[0], argv[0], argv[0], argv[0], argv[0]);
     213        } else if (strcmp(argv[2], "enc") == 0) {
     214                pass_len = arc_encode(argv[4], strlen(argv[4]), (unsigned char **) &pass_cr, argv[3], 12);
     215                printf("%s\n", base64_encode(pass_cr, pass_len));
     216        } else if (strcmp(argv[2], "dec") == 0) {
     217                pass_len = base64_decode(argv[4], (unsigned char **) &pass_cr);
     218                arc_decode(pass_cr, pass_len, (char **) &pass_cl, argv[3]);
     219                printf("%s\n", pass_cl);
     220        } else if (strcmp(argv[2], "hash") == 0) {
    234221                md5_byte_t pass_md5[21];
    235222                md5_state_t md5_state;
    236                
    237                 random_bytes( pass_md5 + 16, 5 );
    238                 md5_init( &md5_state );
    239                 md5_append( &md5_state, (md5_byte_t*) argv[3], strlen( argv[3] ) );
    240                 md5_append( &md5_state, pass_md5 + 16, 5 ); /* Add the salt. */
    241                 md5_finish( &md5_state, pass_md5 );
    242                
    243                 printf( "%s\n", base64_encode( pass_md5, 21 ) );
    244         }
    245         else if( strcmp( argv[2], "unhash" ) == 0 )
    246         {
    247                 printf( "Hash %s submitted to a massive Beowulf cluster of\n"
    248                         "overclocked 486s. Expect your answer next year somewhere around this time. :-)\n", argv[3] );
    249         }
    250         else if( strcmp( argv[2], "chkhash" ) == 0 )
    251         {
    252                 char *hash = strncmp( argv[3], "md5:", 4 ) == 0 ? argv[3] + 4 : argv[3];
    253                 int st = md5_verify_password( argv[4], hash );
    254                
    255                 printf( "Hash %s given password.\n", st == 0 ? "matches" : "does not match" );
    256                
     223
     224                random_bytes(pass_md5 + 16, 5);
     225                md5_init(&md5_state);
     226                md5_append(&md5_state, (md5_byte_t *) argv[3], strlen(argv[3]));
     227                md5_append(&md5_state, pass_md5 + 16, 5);   /* Add the salt. */
     228                md5_finish(&md5_state, pass_md5);
     229
     230                printf("%s\n", base64_encode(pass_md5, 21));
     231        } else if (strcmp(argv[2], "unhash") == 0) {
     232                printf("Hash %s submitted to a massive Beowulf cluster of\n"
     233                       "overclocked 486s. Expect your answer next year somewhere around this time. :-)\n", argv[3]);
     234        } else if (strcmp(argv[2], "chkhash") == 0) {
     235                char *hash = strncmp(argv[3], "md5:", 4) == 0 ? argv[3] + 4 : argv[3];
     236                int st = md5_verify_password(argv[4], hash);
     237
     238                printf("Hash %s given password.\n", st == 0 ? "matches" : "does not match");
     239
    257240                return st;
    258241        }
    259        
     242
    260243        return 0;
    261244}
    262245
    263246/* Signal handler for SIGTERM and SIGINT */
    264 static void sighandler_shutdown( int signal )
     247static void sighandler_shutdown(int signal)
    265248{
    266249        /* Write a single null byte to the pipe, just to send a message to the main loop.
    267250         * This gets handled by bitlbee_shutdown (the b_input_add callback for this pipe) */
    268         write( signal_shutdown_pipe[1], "", 1 );
     251        write(signal_shutdown_pipe[1], "", 1);
    269252}
    270253
     
    272255 * A desperate attempt to tell the user that everything is wrong in the world.
    273256 * Avoids using irc_abort() because it has several unsafe calls to malloc */
    274 static void sighandler_crash( int signal )
     257static void sighandler_crash(int signal)
    275258{
    276259        GSList *l;
     
    278261        int len = strlen(message);
    279262
    280         for (l = irc_connection_list; l; l = l->next ) {
     263        for (l = irc_connection_list; l; l = l->next) {
    281264                irc_t *irc = l->data;
    282                 write( irc->fd, message, len );
    283         }
    284 
    285         raise( signal );
     265                write(irc->fd, message, len);
     266        }
     267
     268        raise(signal);
    286269}
    287270
     
    290273        struct timeval time[1];
    291274
    292         gettimeofday( time, 0 );
    293         return( (double) time->tv_sec + (double) time->tv_usec / 1000000 );
    294 }
     275        gettimeofday(time, 0);
     276        return((double) time->tv_sec + (double) time->tv_usec / 1000000);
     277}
Note: See TracChangeset for help on using the changeset viewer.