void main() { void func1(void), func2(void), func3(void); onexit( func1 ); onexit( func2 ); onexit( func3 ); printf( "Do this first.\n" ); }
void CleanUp() { #ifdef ENABLE_BACKTRACE onexit(); #endif sem_wait(&payguide::free_workers_lock); /* Cleaning up and exit */ /* Clean operators rules */ LoadModules(NULL); LoadOperators(NULL); if (payguide::modules_list!=NULL) { delete payguide::modules_list; payguide::modules_list=NULL; } if (payguide::operators_list!=NULL) { delete payguide::operators_list; payguide::operators_list=NULL; } if (payguide::workers_list!=NULL) { delete payguide::workers_list; payguide::workers_list=NULL; } UnLoadAllInitSO(); LogWrite(LOGMSG_SYSTEM, "(Clean up complete sucessful.)"); LogClose(); sem_post(&payguide::free_workers_lock); }
_onexit_t _RTL_FUNC _onexit(_onexit_t func) { return onexit(func); }
int sdddd(void){ FILE *fp; char *tmp, *tmp2, *user, *pass, *line; printf("Inserire utente: "); if(scanf("%ms", &user) == EOF){ perror("scanf"); return EXIT_FAILURE; } printf("Inserire password: "******"%ms", &pass) == EOF){ perror("scanf"); onexit(user, NULL, NULL, NULL, 1); return EXIT_FAILURE; } size_t max_length = 250; line = malloc(max_length); if(line == NULL){ perror("malloc"); onexit(user, pass, NULL, NULL, 2); return EXIT_FAILURE; } fp = fopen("name_pass.txt", "r"); if(fp == NULL){ printf("Errore apertura file\n"); onexit(user, pass, line, NULL, 3); return EXIT_FAILURE; } while(!feof(fp)){ if(fgets(line, max_length , fp) == NULL){ continue; } tmp = strtok(line, " "); if(tmp == NULL){ perror("strtok"); onexit(user, pass, line, fp, 4); return EXIT_FAILURE; } tmp2 = strtok(NULL, "\n"); if(tmp2 == NULL){ perror("strtok"); onexit(user, pass, line, fp, 4); return EXIT_FAILURE; } if((strcmp(tmp,user) == 0) && (strcmp(tmp2,pass) == 0)){ printf("USER: %s - PASS: %s\n", tmp, tmp2); onexit(user, pass, line, fp, 4); return EXIT_SUCCESS; } else{ continue; } } printf("no such user or pwd into DB\n"); onexit(user, pass, line, fp, 4); return EXIT_FAILURE; }