mirror of
https://github.com/vanhauser-thc/thc-hydra.git
synced 2025-08-20 21:33:51 -07:00
Fix compilation warning for long unsigned value printing
This commit is contained in:
parent
b3ddd4a2d2
commit
e1e708d1a1
2 changed files with 30 additions and 23 deletions
44
hydra.c
44
hydra.c
|
@ -594,7 +594,7 @@ void hydra_debug(int32_t force, char *string) {
|
||||||
if (!debug && !force)
|
if (!debug && !force)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
printf("[DEBUG] Code: %s Time: %lu\n", string, (uint64_t) time(NULL));
|
printf("[DEBUG] Code: %s Time: %" hPRIu64 "\n", string, (uint64_t) time(NULL));
|
||||||
printf("[DEBUG] Options: mode %d ssl %d restore %d showAttempt %d tasks %d max_use %d tnp %d tpsal %d tprl %d exit_found %d miscptr %s service %s\n",
|
printf("[DEBUG] Options: mode %d ssl %d restore %d showAttempt %d tasks %d max_use %d tnp %d tpsal %d tprl %d exit_found %d miscptr %s service %s\n",
|
||||||
hydra_options.mode, hydra_options.ssl, hydra_options.restore,
|
hydra_options.mode, hydra_options.ssl, hydra_options.restore,
|
||||||
hydra_options.showAttempt, hydra_options.tasks, hydra_options.max_use,
|
hydra_options.showAttempt, hydra_options.tasks, hydra_options.max_use,
|
||||||
|
@ -602,7 +602,7 @@ void hydra_debug(int32_t force, char *string) {
|
||||||
hydra_options.try_password_reverse_login, hydra_options.exit_found,
|
hydra_options.try_password_reverse_login, hydra_options.exit_found,
|
||||||
STR_NULL(hydra_options.miscptr), hydra_options.service);
|
STR_NULL(hydra_options.miscptr), hydra_options.service);
|
||||||
|
|
||||||
printf("[DEBUG] Brains: active %d targets %d finished %d todo_all %lu todo %lu sent %lu found %lu countlogin %lu sizelogin %lu countpass %lu sizepass %lu\n",
|
printf("[DEBUG] Brains: active %d targets %d finished %d todo_all %" hPRIu64 " todo %" hPRIu64 " sent %" hPRIu64 " found %" hPRIu64 " countlogin %" hPRIu64 " sizelogin %" hPRIu64 " countpass %" hPRIu64 " sizepass %" hPRIu64 "\n",
|
||||||
hydra_brains.active, hydra_brains.targets, hydra_brains.finished,
|
hydra_brains.active, hydra_brains.targets, hydra_brains.finished,
|
||||||
hydra_brains.todo_all + total_redo_count, hydra_brains.todo,
|
hydra_brains.todo_all + total_redo_count, hydra_brains.todo,
|
||||||
hydra_brains.sent, hydra_brains.found,
|
hydra_brains.sent, hydra_brains.found,
|
||||||
|
@ -614,7 +614,7 @@ void hydra_debug(int32_t force, char *string) {
|
||||||
for (i = 0; i < hydra_brains.targets; i++) {
|
for (i = 0; i < hydra_brains.targets; i++) {
|
||||||
hydra_target* target = hydra_targets[i];
|
hydra_target* target = hydra_targets[i];
|
||||||
printf
|
printf
|
||||||
("[DEBUG] Target %d - target %s ip %s login_no %lu pass_no %lu sent %lu pass_state %d redo_state %d (%d redos) use_count %d failed %d done %d fail_count %d login_ptr %s pass_ptr %s\n",
|
("[DEBUG] Target %d - target %s ip %s login_no %" hPRIu64 " pass_no %" hPRIu64 " sent %" hPRIu64 " pass_state %d redo_state %d (%d redos) use_count %d failed %d done %d fail_count %d login_ptr %s pass_ptr %s\n",
|
||||||
i, STR_NULL(target->target), hydra_address2string_beautiful(target->ip),
|
i, STR_NULL(target->target), hydra_address2string_beautiful(target->ip),
|
||||||
target->login_no, target->pass_no, target->sent,
|
target->login_no, target->pass_no, target->sent,
|
||||||
target->pass_state, target->redo_state, target->redo,
|
target->pass_state, target->redo_state, target->redo,
|
||||||
|
@ -1139,7 +1139,7 @@ void hydra_service_init(int32_t target_no) {
|
||||||
if (hydra_options.outfile_format == FORMAT_JSONV1) {
|
if (hydra_options.outfile_format == FORMAT_JSONV1) {
|
||||||
char json_error[120];
|
char json_error[120];
|
||||||
snprintf(json_error, sizeof(json_error), "[ERROR] unexpected result connecting to target %s port %d", hydra_address2string_beautiful(t->ip), t->port);
|
snprintf(json_error, sizeof(json_error), "[ERROR] unexpected result connecting to target %s port %d", hydra_address2string_beautiful(t->ip), t->port);
|
||||||
fprintf(hydra_brains.ofp, "\n\t],\n\"success\": false,\n\"errormessages\": [ \"%s\" ],\n\"quantityfound\": %lu }\n", json_error, hydra_brains.found);
|
fprintf(hydra_brains.ofp, "\n\t],\n\"success\": false,\n\"errormessages\": [ \"%s\" ],\n\"quantityfound\": %" hPRIu64 " }\n", json_error, hydra_brains.found);
|
||||||
}
|
}
|
||||||
fclose(hydra_brains.ofp);
|
fclose(hydra_brains.ofp);
|
||||||
}
|
}
|
||||||
|
@ -1544,14 +1544,14 @@ int32_t hydra_send_next_pair(int32_t target_no, int32_t head_no) {
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
printf
|
printf
|
||||||
("[DEBUG] send_next_pair_init target %d, head %d, redo %d, redo_state %d, pass_state %d. loop_mode %d, curlogin %s, curpass %s, tlogin %s, tpass %s, logincnt %lu/%lu, passcnt %lu/%lu, loop_cnt %d\n",
|
("[DEBUG] send_next_pair_init target %d, head %d, redo %d, redo_state %d, pass_state %d. loop_mode %d, curlogin %s, curpass %s, tlogin %s, tpass %s, logincnt %" hPRIu64 "/%" hPRIu64 ", passcnt %" hPRIu64 "/%" hPRIu64 ", loop_cnt %d\n",
|
||||||
target_no, head_no, hydra_targets[target_no]->redo, hydra_targets[target_no]->redo_state, hydra_targets[target_no]->pass_state, hydra_options.loop_mode,
|
target_no, head_no, hydra_targets[target_no]->redo, hydra_targets[target_no]->redo_state, hydra_targets[target_no]->pass_state, hydra_options.loop_mode,
|
||||||
hydra_heads[head_no]->current_login_ptr, hydra_heads[head_no]->current_pass_ptr, hydra_targets[target_no]->login_ptr, hydra_targets[target_no]->pass_ptr,
|
hydra_heads[head_no]->current_login_ptr, hydra_heads[head_no]->current_pass_ptr, hydra_targets[target_no]->login_ptr, hydra_targets[target_no]->pass_ptr,
|
||||||
hydra_targets[target_no]->login_no, hydra_brains.countlogin, hydra_targets[target_no]->pass_no, hydra_brains.countpass, loop_cnt);
|
hydra_targets[target_no]->login_no, hydra_brains.countlogin, hydra_targets[target_no]->pass_no, hydra_brains.countpass, loop_cnt);
|
||||||
|
|
||||||
if (loop_cnt > (hydra_brains.countlogin * 2) + 1 && loop_cnt > (hydra_brains.countpass * 2) + 1) {
|
if (loop_cnt > (hydra_brains.countlogin * 2) + 1 && loop_cnt > (hydra_brains.countpass * 2) + 1) {
|
||||||
if (debug)
|
if (debug)
|
||||||
printf("[DEBUG] too many loops in send_next_pair, returning -1 (loop_cnt %d, sent %lu, todo %lu)\n", loop_cnt, hydra_targets[target_no]->sent, hydra_brains.todo);
|
printf("[DEBUG] too many loops in send_next_pair, returning -1 (loop_cnt %d, sent %" hPRIu64 ", todo %" hPRIu64 ")\n", loop_cnt, hydra_targets[target_no]->sent, hydra_brains.todo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1561,7 +1561,7 @@ int32_t hydra_send_next_pair(int32_t target_no, int32_t head_no) {
|
||||||
snpdone = 1;
|
snpdone = 1;
|
||||||
} else {
|
} else {
|
||||||
if (debug && (hydra_heads[head_no]->current_login_ptr != NULL || hydra_heads[head_no]->current_pass_ptr != NULL))
|
if (debug && (hydra_heads[head_no]->current_login_ptr != NULL || hydra_heads[head_no]->current_pass_ptr != NULL))
|
||||||
printf("[COMPLETED] target %s - login \"%s\" - pass \"%s\" - child %d - %lu of %lu\n",
|
printf("[COMPLETED] target %s - login \"%s\" - pass \"%s\" - child %d - %" hPRIu64 " of %" hPRIu64 "\n",
|
||||||
hydra_targets[target_no]->target, hydra_heads[head_no]->current_login_ptr, hydra_heads[head_no]->current_pass_ptr, head_no,
|
hydra_targets[target_no]->target, hydra_heads[head_no]->current_login_ptr, hydra_heads[head_no]->current_pass_ptr, head_no,
|
||||||
hydra_targets[target_no]->sent, hydra_brains.todo + hydra_targets[target_no]->redo);
|
hydra_targets[target_no]->sent, hydra_brains.todo + hydra_targets[target_no]->redo);
|
||||||
hydra_heads[head_no]->redo = 0;
|
hydra_heads[head_no]->redo = 0;
|
||||||
|
@ -1871,7 +1871,7 @@ int32_t hydra_send_next_pair(int32_t target_no, int32_t head_no) {
|
||||||
return 0; // not prevent disabling it, if its needed its already done in the above line
|
return 0; // not prevent disabling it, if its needed its already done in the above line
|
||||||
}
|
}
|
||||||
if (debug || hydra_options.showAttempt) {
|
if (debug || hydra_options.showAttempt) {
|
||||||
printf("[%sATTEMPT] target %s - login \"%s\" - pass \"%s\" - %lu of %lu [child %d] (%d/%d)\n",
|
printf("[%sATTEMPT] target %s - login \"%s\" - pass \"%s\" - %" hPRIu64 " of %" hPRIu64 " [child %d] (%d/%d)\n",
|
||||||
hydra_targets[target_no]->redo_state ? "REDO-" : snp_is_redo ? "RE-" : "", hydra_targets[target_no]->target, hydra_heads[head_no]->current_login_ptr,
|
hydra_targets[target_no]->redo_state ? "REDO-" : snp_is_redo ? "RE-" : "", hydra_targets[target_no]->target, hydra_heads[head_no]->current_login_ptr,
|
||||||
hydra_heads[head_no]->current_pass_ptr, hydra_targets[target_no]->sent, hydra_brains.todo + hydra_targets[target_no]->redo, head_no, hydra_targets[target_no]->redo_state ? hydra_targets[target_no]->redo_state - 1 : 0, hydra_targets[target_no]->redo);
|
hydra_heads[head_no]->current_pass_ptr, hydra_targets[target_no]->sent, hydra_brains.todo + hydra_targets[target_no]->redo, head_no, hydra_targets[target_no]->redo_state ? hydra_targets[target_no]->redo_state - 1 : 0, hydra_targets[target_no]->redo);
|
||||||
}
|
}
|
||||||
|
@ -3216,11 +3216,11 @@ int main(int argc, char *argv[]) {
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (hydra_brains.countlogin > MAX_LINES) {
|
if (hydra_brains.countlogin > MAX_LINES) {
|
||||||
fprintf(stderr, "[ERROR] Maximum number of logins is %d, this file has %lu entries.\n", MAX_LINES, hydra_brains.countlogin);
|
fprintf(stderr, "[ERROR] Maximum number of logins is %d, this file has %" hPRIu64 " entries.\n", MAX_LINES, hydra_brains.countlogin);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (hydra_brains.sizelogin > MAX_BYTES) {
|
if (hydra_brains.sizelogin > MAX_BYTES) {
|
||||||
fprintf(stderr, "[ERROR] Maximum size of the login file is %d, this file has %lu bytes.\n", MAX_BYTES, (uint64_t) hydra_brains.sizelogin);
|
fprintf(stderr, "[ERROR] Maximum size of the login file is %d, this file has %" hPRIu64 " bytes.\n", MAX_BYTES, (uint64_t) hydra_brains.sizelogin);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
login_ptr = malloc(hydra_brains.sizelogin + hydra_brains.countlogin + 8);
|
login_ptr = malloc(hydra_brains.sizelogin + hydra_brains.countlogin + 8);
|
||||||
|
@ -3245,11 +3245,11 @@ int main(int argc, char *argv[]) {
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (hydra_brains.countpass > MAX_LINES) {
|
if (hydra_brains.countpass > MAX_LINES) {
|
||||||
fprintf(stderr, "[ERROR] Maximum number of passwords is %d, this file has %lu entries.\n", MAX_LINES, hydra_brains.countpass);
|
fprintf(stderr, "[ERROR] Maximum number of passwords is %d, this file has %" hPRIu64 " entries.\n", MAX_LINES, hydra_brains.countpass);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (hydra_brains.sizepass > MAX_BYTES) {
|
if (hydra_brains.sizepass > MAX_BYTES) {
|
||||||
fprintf(stderr, "[ERROR] Maximum size of the password file is %d, this file has %lu bytes.\n", MAX_BYTES, (uint64_t) hydra_brains.sizepass);
|
fprintf(stderr, "[ERROR] Maximum size of the password file is %d, this file has %" hPRIu64 " bytes.\n", MAX_BYTES, (uint64_t) hydra_brains.sizepass);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
pass_ptr = malloc(hydra_brains.sizepass + hydra_brains.countpass + 8);
|
pass_ptr = malloc(hydra_brains.sizepass + hydra_brains.countpass + 8);
|
||||||
|
@ -3292,11 +3292,11 @@ int main(int argc, char *argv[]) {
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (hydra_brains.countlogin > MAX_LINES / 2) {
|
if (hydra_brains.countlogin > MAX_LINES / 2) {
|
||||||
fprintf(stderr, "[ERROR] Maximum number of colon file entries is %d, this file has %lu entries.\n", MAX_LINES / 2, hydra_brains.countlogin);
|
fprintf(stderr, "[ERROR] Maximum number of colon file entries is %d, this file has %" hPRIu64 " entries.\n", MAX_LINES / 2, hydra_brains.countlogin);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (hydra_brains.sizelogin > MAX_BYTES / 2) {
|
if (hydra_brains.sizelogin > MAX_BYTES / 2) {
|
||||||
fprintf(stderr, "[ERROR] Maximum size of the colon file is %d, this file has %lu bytes.\n", MAX_BYTES / 2, (uint64_t) hydra_brains.sizelogin);
|
fprintf(stderr, "[ERROR] Maximum size of the colon file is %d, this file has %" hPRIu64 " bytes.\n", MAX_BYTES / 2, (uint64_t) hydra_brains.sizelogin);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
csv_ptr = malloc(hydra_brains.sizelogin + 2 * hydra_brains.countlogin + 8);
|
csv_ptr = malloc(hydra_brains.sizelogin + 2 * hydra_brains.countlogin + 8);
|
||||||
|
@ -3519,7 +3519,7 @@ int main(int argc, char *argv[]) {
|
||||||
bail("No login/password combination given!");
|
bail("No login/password combination given!");
|
||||||
if (hydra_brains.todo < hydra_options.tasks) {
|
if (hydra_brains.todo < hydra_options.tasks) {
|
||||||
if (verbose && hydra_options.tasks != TASKS)
|
if (verbose && hydra_options.tasks != TASKS)
|
||||||
printf("[VERBOSE] More tasks defined than login/pass pairs exist. Tasks reduced to %lu\n", hydra_brains.todo);
|
printf("[VERBOSE] More tasks defined than login/pass pairs exist. Tasks reduced to %" hPRIu64 "\n", hydra_brains.todo);
|
||||||
hydra_options.tasks = hydra_brains.todo;
|
hydra_options.tasks = hydra_brains.todo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3554,18 +3554,18 @@ int main(int argc, char *argv[]) {
|
||||||
if (hydra_options.ssl)
|
if (hydra_options.ssl)
|
||||||
options = options | OPTION_SSL;
|
options = options | OPTION_SSL;
|
||||||
|
|
||||||
printf("[DATA] max %d task%s per %d server%s, overall %d task%s, %lu login tr",
|
printf("[DATA] max %d task%s per %d server%s, overall %d task%s, %" hPRIu64 " login tr",
|
||||||
hydra_options.tasks, hydra_options.tasks == 1 ? "" : "s",
|
hydra_options.tasks, hydra_options.tasks == 1 ? "" : "s",
|
||||||
hydra_brains.targets, hydra_brains.targets == 1 ? "" : "s",
|
hydra_brains.targets, hydra_brains.targets == 1 ? "" : "s",
|
||||||
hydra_options.max_use, hydra_options.max_use == 1 ? "" : "s",
|
hydra_options.max_use, hydra_options.max_use == 1 ? "" : "s",
|
||||||
hydra_brains.todo);
|
hydra_brains.todo);
|
||||||
printf("%s", hydra_brains.todo == 1 ? "y" : "ies");
|
printf("%s", hydra_brains.todo == 1 ? "y" : "ies");
|
||||||
if (hydra_options.colonfile == NULL) {
|
if (hydra_options.colonfile == NULL) {
|
||||||
printf(" (l:%lu/p:%lu), ~%lu tr",
|
printf(" (l:%" hPRIu64 "/p:%" hPRIu64 "), ~%" hPRIu64 " tr",
|
||||||
(uint64_t) hydra_brains.countlogin, (uint64_t) hydra_brains.countpass,
|
(uint64_t) hydra_brains.countlogin, (uint64_t) hydra_brains.countpass,
|
||||||
math2);
|
math2);
|
||||||
} else {
|
} else {
|
||||||
printf(", ~%lu tr", math2);
|
printf(", ~%" hPRIu64 " tr", math2);
|
||||||
}
|
}
|
||||||
printf("%s", math2 == 1 ? "y" : "ies");
|
printf("%s", math2 == 1 ? "y" : "ies");
|
||||||
printf(" per task\n");
|
printf(" per task\n");
|
||||||
|
@ -3928,7 +3928,7 @@ int main(int argc, char *argv[]) {
|
||||||
case 'C': // head reports connect error
|
case 'C': // head reports connect error
|
||||||
fck = write(hydra_heads[head_no]->sp[0], "Q", 1);
|
fck = write(hydra_heads[head_no]->sp[0], "Q", 1);
|
||||||
if (debug) {
|
if (debug) {
|
||||||
printf("[ATTEMPT-ERROR] target %s - login \"%s\" - pass \"%s\" - child %d - %lu of %lu\n",
|
printf("[ATTEMPT-ERROR] target %s - login \"%s\" - pass \"%s\" - child %d - %" hPRIu64 " of %" hPRIu64 "\n",
|
||||||
hydra_targets[hydra_heads[head_no]->target_no]->target, hydra_heads[head_no]->current_login_ptr, hydra_heads[head_no]->current_pass_ptr, head_no,
|
hydra_targets[hydra_heads[head_no]->target_no]->target, hydra_heads[head_no]->current_login_ptr, hydra_heads[head_no]->current_pass_ptr, head_no,
|
||||||
hydra_targets[hydra_heads[head_no]->target_no]->sent, hydra_brains.todo);
|
hydra_targets[hydra_heads[head_no]->target_no]->sent, hydra_brains.todo);
|
||||||
}
|
}
|
||||||
|
@ -4007,7 +4007,7 @@ int main(int argc, char *argv[]) {
|
||||||
for (j = 0; j < hydra_options.max_use; j++)
|
for (j = 0; j < hydra_options.max_use; j++)
|
||||||
if (hydra_heads[j]->active >= HEAD_UNUSED)
|
if (hydra_heads[j]->active >= HEAD_UNUSED)
|
||||||
k++;
|
k++;
|
||||||
printf("[STATUS] %.2f tries/min, %lu tries in %02lu:%02luh, %lu to do in %02lu:%02luh, %d active\n", (1.0 * hydra_brains.sent) / (((elapsed_status - starttime) * 1.0) / 60), // tries/min
|
printf("[STATUS] %.2f tries/min, %" hPRIu64 " tries in %02" hPRIu64 ":%02" hPRIu64 "h, %" hPRIu64 " to do in %02" hPRIu64 ":%02" hPRIu64 "h, %d active\n", (1.0 * hydra_brains.sent) / (((elapsed_status - starttime) * 1.0) / 60), // tries/min
|
||||||
hydra_brains.sent, // tries
|
hydra_brains.sent, // tries
|
||||||
(uint64_t) ((elapsed_status - starttime) / 3600), // hours
|
(uint64_t) ((elapsed_status - starttime) / 3600), // hours
|
||||||
(uint64_t) (((elapsed_status - starttime) % 3600) / 60), // minutes
|
(uint64_t) (((elapsed_status - starttime) % 3600) / 60), // minutes
|
||||||
|
@ -4052,7 +4052,7 @@ int main(int argc, char *argv[]) {
|
||||||
fprintf(stderr, "[ERROR] illegal target result value (%d=>%d)\n", i, hydra_targets[i]->done);
|
fprintf(stderr, "[ERROR] illegal target result value (%d=>%d)\n", i, hydra_targets[i]->done);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("%d of %d target%s%scompleted, %lu valid password",
|
printf("%d of %d target%s%scompleted, %" hPRIu64 " valid password",
|
||||||
hydra_brains.targets - j - k - error, hydra_brains.targets, hydra_brains.targets == 1 ? " " : "s ",
|
hydra_brains.targets - j - k - error, hydra_brains.targets, hydra_brains.targets == 1 ? " " : "s ",
|
||||||
hydra_brains.found > 0 ? "successfully " : "", hydra_brains.found);
|
hydra_brains.found > 0 ? "successfully " : "", hydra_brains.found);
|
||||||
printf("%s", hydra_brains.found < 1 ? "" : "s");
|
printf("%s", hydra_brains.found < 1 ? "" : "s");
|
||||||
|
@ -4122,7 +4122,7 @@ int main(int argc, char *argv[]) {
|
||||||
printf("%s (%s) finished at %s\n", PROGRAM, RESOURCE, hydra_build_time());
|
printf("%s (%s) finished at %s\n", PROGRAM, RESOURCE, hydra_build_time());
|
||||||
if (hydra_brains.ofp != NULL && hydra_brains.ofp != stdout) {
|
if (hydra_brains.ofp != NULL && hydra_brains.ofp != stdout) {
|
||||||
if (hydra_options.outfile_format == FORMAT_JSONV1) {
|
if (hydra_options.outfile_format == FORMAT_JSONV1) {
|
||||||
fprintf(hydra_brains.ofp, "\n\t],\n\"success\": %s,\n\"errormessages\": [ %s ],\n\"quantityfound\": %lu }\n",
|
fprintf(hydra_brains.ofp, "\n\t],\n\"success\": %s,\n\"errormessages\": [ %s ],\n\"quantityfound\": %" hPRIu64 " }\n",
|
||||||
(error ? "false" : "true"), json_error, hydra_brains.found);
|
(error ? "false" : "true"), json_error, hydra_brains.found);
|
||||||
}
|
}
|
||||||
fclose(hydra_brains.ofp);
|
fclose(hydra_brains.ofp);
|
||||||
|
|
9
hydra.h
9
hydra.h
|
@ -3,11 +3,18 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#ifdef __sun
|
#ifdef __sun
|
||||||
#include <sys/int_types.h>
|
#include <sys/int_types.h>
|
||||||
#elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
|
#elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX) || defined(__APPLE__)
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#else
|
#else
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_INTTYPES_H) || defined(__CLANG_INTTYPES_H)
|
||||||
|
#define hPRIu64 PRIu64
|
||||||
|
#else
|
||||||
|
#define hPRIu64 "lu"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue