int main(int argc, char *argv[]) { struct hostent *he = NULL; char* resolved_name = NULL; int retval = CL_RETVAL_OK; char* ip_string = NULL; char** tp = NULL; char** tp2 = NULL; int name_only = 0; int sge_aliasing = 0; int all_option = 0; int system_error = 0; #if defined(CRAY) struct sockaddr_in addr; #else struct in_addr addr; #endif if (argc < 2) { usage(); } ip_string = argv[1]; if (!strcmp(argv[1], "-help")) { usage(); } if (!strcmp(argv[1], "-name")) { if (argc != 3) { usage(); } name_only = 1; ip_string = argv[2]; } if (!strcmp(argv[1], "-aname")) { if (argc != 3) { usage(); } name_only = 1; sge_aliasing = 1; ip_string = argv[2]; } if (!strcmp(argv[1], "-all")) { if (argc != 3) { usage(); } name_only = 0; sge_aliasing = 1; all_option = 1; ip_string = argv[2]; } retval = cl_com_setup_commlib(CL_NO_THREAD ,CL_LOG_OFF, NULL); if (retval != CL_RETVAL_OK) { fprintf(stderr,"%s\n",cl_get_error_text(retval)); exit(1); } if (sge_aliasing ) { cl_com_set_alias_file(sge_get_alias_path()); } retval = cl_com_set_error_func(gethostbyaddr_communication_error); if (retval != CL_RETVAL_OK) { fprintf(stderr,"%s\n",cl_get_error_text(retval)); exit(1); } #if defined(CRAY) addr.sin_addr.s_addr = inet_addr(ip_string); #else addr.s_addr = inet_addr(ip_string); #endif retval = cl_com_cached_gethostbyaddr(&addr, &resolved_name, &he, &system_error); if (retval != CL_RETVAL_OK) { cl_com_cleanup_commlib(); if (error_reported == 0) { char* err_text = cl_com_get_h_error_string(system_error); if (err_text == NULL) { err_text = strdup(strerror(system_error)); if (err_text == NULL) { err_text = strdup("unexpected error"); } } if ( ip_string == NULL) { ip_string = "NULL"; } fprintf(stderr,"error resolving ip "SFQ": %s (%s)\n",ip_string, cl_get_error_text(retval), err_text); free(err_text); err_text = NULL; } exit(1); } if (he == NULL) { fprintf(stderr,"%s\n","could not get hostent struct"); } if (name_only) { if (sge_aliasing) { if (resolved_name != NULL) { printf("%s\n",resolved_name); } else { fprintf(stderr,"%s\n","unexpected error"); exit(1); } } else { if (he != NULL) { printf("%s\n",he->h_name); } else { fprintf(stderr,"%s\n","could not get hostent struct"); exit(1); } } } else { if (he != NULL) { printf(MSG_SYSTEM_HOSTNAMEIS_S,he->h_name); printf("\n"); } if (resolved_name != NULL && all_option) { printf("SGE name: %s\n",resolved_name); free(resolved_name); resolved_name = NULL; } if (he != NULL) { printf(MSG_SYSTEM_ALIASES ); for (tp = he->h_aliases; *tp; tp++) printf("%s ", *tp); printf("\n"); printf(MSG_SYSTEM_ADDRESSES ); for (tp2 = he->h_addr_list; *tp2; tp2++) printf("%s ", inet_ntoa(* (struct in_addr *) *tp2)); /* inet_ntoa() is not MT save */ printf("\n"); } } sge_free_hostent(&he); if (resolved_name != NULL) { free(resolved_name); resolved_name = NULL; } retval = cl_com_cleanup_commlib(); if (retval != CL_RETVAL_OK) { fprintf(stderr,"%s\n",cl_get_error_text(retval)); exit(1); } return 0; }
int main(int argc,char *argv[]) { struct hostent *he = NULL; char* resolved_name = NULL; int retval = CL_RETVAL_OK; char **tp,**tp2; int name_only = 0; int sge_aliasing = 0; int all_option = 0; int system_error = 0; if (argc < 1 ) { usage(); } if (argc >= 2) { if (!strcmp(argv[1], "-help")) { usage(); } if (!strcmp(argv[1], "-name")) { if (argc != 2) { usage(); } name_only = 1; } if (!strcmp(argv[1], "-aname")) { if (argc != 2) { usage(); } name_only = 1; sge_aliasing = 1; } if (!strcmp(argv[1], "-all")) { if (argc != 2) { usage(); } name_only = 0; sge_aliasing = 1; all_option = 1; } } if (name_only == 0 && argc != 1 && all_option == 0) { usage(); } retval = cl_com_setup_commlib(CL_NO_THREAD ,CL_LOG_OFF, NULL); if (retval != CL_RETVAL_OK) { fprintf(stderr,"%s\n",cl_get_error_text(retval)); exit(1); } if (sge_aliasing ) { const char *alias_path = sge_get_alias_path(); cl_com_set_alias_file(alias_path); sge_free(&alias_path); } retval = cl_com_gethostname(&resolved_name, NULL, &he, &system_error); if (retval != CL_RETVAL_OK) { char* err_text = cl_com_get_h_error_string(system_error); if (err_text == NULL) { err_text = strdup(strerror(system_error)); if (err_text == NULL) { err_text = strdup("unexpected error"); } } fprintf(stderr,"error resolving local host: %s (%s)\n",cl_get_error_text(retval), err_text); sge_free(&err_text); cl_com_cleanup_commlib(); exit(1); } if (name_only) { if (sge_aliasing) { if (resolved_name != NULL) { printf("%s\n",resolved_name); } else { printf("%s\n","unexpected error"); } } else { if (he != NULL) { printf("%s\n",he->h_name); } else { printf("%s\n","could not get hostent struct"); } } } else { if (he != NULL) { printf(MSG_SYSTEM_HOSTNAMEIS_S , he->h_name); printf("\n"); if (resolved_name != NULL && all_option) { printf("SGE name: %s\n",resolved_name); } printf("%s", MSG_SYSTEM_ALIASES); for (tp = he->h_aliases; *tp; tp++) { printf("%s ", *tp); } printf("\n"); printf("%s", MSG_SYSTEM_ADDRESSES); for (tp2 = he->h_addr_list; *tp2; tp2++) { printf("%s ", inet_ntoa(* (struct in_addr *) *tp2)); /* inet_ntoa() is not MT save */ } printf("\n"); } else { fprintf(stderr,"%s\n","could not get hostent struct"); } } sge_free(&resolved_name); sge_free_hostent(&he); retval = cl_com_cleanup_commlib(); if (retval != CL_RETVAL_OK) { fprintf(stderr,"%s\n",cl_get_error_text(retval)); exit(1); } return 0; }