| | 947 | | main(argc, argv) |
| | 948 | | int argc; |
| | 949 | | char **argv; |
| | 950 | | { |
| | 951 | | int i, j; |
| | 952 | | char *name = ""; |
| | 953 | | struct passwd *pe; |
| | 954 | | int testmode = 0; |
| | 955 | | struct timeval tnow; |
| | 956 | | char buf[128]; |
| | 957 | | |
| | 958 | | #ifndef WIN32 |
| | 959 | | |
| | 960 | | check_ext_input(); |
| | 961 | | |
| | 962 | | |
| | 963 | | (void)open("/dev/null", O_RDONLY, 0);
|
| | 964 | | (void)open("/dev/null", O_RDONLY, 0);
|
| | 965 | | (void)open("/dev/null", O_RDONLY, 0);
|
| | 966 | | #else |
| | 967 | | |
| | 968 | | |
| | 969 | | |
| | 970 | | if (WSAStartup(0x0101, &WSAData) != 0) { |
| | 971 | | printf("\nWSAStartup() failed\n"); |
| | 972 | | ExitProcess(1); |
| | 973 | | } |
| | 974 | | setsockopt(INVALID_SOCKET,SOL_SOCKET,SO_OPENTYPE, |
| | 975 | | (char *)&nAlert,sizeof(int)); |
| | 976 | | osinfo=malloc(sizeof(OSVERSIONINFO)); |
| | 977 | | osinfo->dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
| | 978 | | GetVersionEx(osinfo); |
| | 979 | | os_is_NT= ( osinfo->dwPlatformId == VER_PLATFORM_WIN32_NT); |
| | 980 | | #endif |
| | 981 | | |
| | 982 | | { |
| | 983 | | char *p; |
| | 984 | | if (p = getenv("PVMDDEBUG")) |
| | 985 | | pvmdebmask = pvmstrtoi(p); |
| | 986 | | } |
| | 987 | | |
| | 988 | | #ifndef WIN32 |
| | 989 | | if ((pvm_useruid = getuid()) == -1) { |
| | 990 | | pvmlogerror("main() can't getuid()\n"); |
| | 991 | | pvmbailout(0); |
| | 992 | | } |
| | 993 | | pvmchkuid( pvm_useruid ); |
| | 994 | | #else |
| | 995 | | username = MyGetUserName(); |
| | 996 | | #endif |
| | 997 | | |
| | 998 | | pvmsetlog(3); |
| | 999 | | |
| | 1000 | | #ifndef WIN32 |
| | 1001 | | if (pe = getpwuid(pvm_useruid)) |
| | 1002 | | username = STRALLOC(pe->pw_name);
|
| | 1003 | | else |
| | 1004 | | pvmlogerror("main() can't getpwuid\n"); |
| | 1005 | | endpwent(); |
| | 1006 | | #endif |
| | 1007 | | |
| | 1008 | | #ifdef WIN32 |
| | 1009 | | if ((pvmmyupid = getpid()) == -1) { |
| | 1010 | | pvmlogerror("main() can't getpid() %d \n",GetLastError()); |
| | 1011 | | pvmbailout(0); |
| | 1012 | | } |
| | 1013 | | #else |
| | 1014 | | if ((pvmmyupid = getpid()) == -1) { |
| | 1015 | | pvmlogerror("main() can't getpid()\n"); |
| | 1016 | | pvmbailout(0); |
| | 1017 | | } |
| | 1018 | | #endif |
| | 1019 | | |
| | 1020 | | (void)pvmgetroot(); |
| | 1021 | | |
| | 1022 | | sprintf(buf, "PVM_ARCH=%s", myarchname); |
| | 1023 | | pvmputenv(STRALLOC(buf));
|
| | 1024 | | |
| | 1025 | | pvmmydsig = pvmgetdsig(); |
| | 1026 | | |
| | 1027 | | ppi_config(argc, argv); |
| | 1028 | | |
| | 1029 | | #if defined(IMA_PGON) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) \ |
| | 1030 | | || defined(IMA_AIX5SP2) || defined(IMA_BEOLIN) |
| | 1031 | | mpp_init(&argc, argv); |
| | 1032 | | #endif |
| | 1033 | | |
| | 1034 | | for (i = j = 1; i < argc; i++) { |
| | 1035 | | if (argv[i][0] == '-') { |
| | 1036 | | switch (argv[i][1]) { |
| | 1037 | | |
| | 1038 | | case 'd': |
| | 1039 | | pvmdebmask = pvmstrtoi(argv[i] + 2); |
| | 1040 | | break; |
| | 1041 | | |
| | 1042 | | case 'n': |
| | 1043 | | name = argv[i] + 2; |
| | 1044 | | break; |
| | 1045 | | |
| | 1046 | | case 'S': |
| | 1047 | | argv[j++] = argv[i]; |
| | 1048 | | case 's': |
| | 1049 | | slavemode = 1; |
| | 1050 | | break; |
| | 1051 | | |
| | 1052 | | case 't': |
| | 1053 | | testmode = 1; |
| | 1054 | | break; |
| | 1055 | | |
| | 1056 | | #ifdef WIN32 |
| | 1057 | | case 'u': |
| | 1058 | | if (os_is_NT==FALSE) { |
| | 1059 | | |
| | 1060 | | argv[i]++;argv[i]++; |
| | 1061 | | strcpy(username,argv[i]); |
| | 1062 | | } |
| | 1063 | | else |
| | 1064 | | if (strcmp(strcat("-u",username),argv[i])) { |
| | | | ... |
| | 1066 | | "Provided Username(%s) does not match ", |
| | 1067 | | username); |
| | 1068 | | fprintf(stderr,"with OS account(%s).\n", |
| | 1069 | | argv[i]); |
| | 1070 | | fprintf(stderr,"Wrong rshd ?!\n"); |
| | 1071 | | exit(1); |
| | 1072 | | } |
| | 1073 | | break; |
| | 1074 | | #endif |
| | 1075 | | |
| | 1076 | | default: |
| | 1077 | | argv[j++] = argv[i]; |
| | 1078 | | } |
| | 1079 | | |
| | 1080 | | } else { |
| | 1081 | | argv[j++] = argv[i]; |
| | 1082 | | } |
| | 1083 | | } |
| | 1084 | | argc = j; |
| | 1085 | | |
| | 1086 | | if (pvmdebmask) { |
| | 1087 | | pvmlogprintf("version %s\n", PVM_VER);
|
| | 1088 | | pvmlogprintf("ddpro %d tdpro %d\n", DDPROTOCOL, TDPROTOCOL);
|
| | 1089 | | pvmlogprintf("main() debug mask is 0x%x (%s)\n", |
| | 1090 | | pvmdebmask, debug_flags(pvmdebmask)); |
| | 1091 | | } |
| | 1092 | | |
| | 1093 | | if (!*name) { |
| | 1094 | | if (gethostname(buf, sizeof(buf)-1) == -1) { |
| | 1095 | | pvmlogerror("main() can't gethostname()\n"); |
| | 1096 | | pvmbailout(0); |
| | 1097 | | } |
| | 1098 | | name = buf; |
| | 1099 | | } |
| | 1100 | | if (testmode) { |
| | 1101 | | PVM_TIMET time_temp;
|
| | 1102 | | gettimeofday(&tnow, (struct timezone*)0); |
| | 1103 | | pvmlogprintf("version %s ddpro %d tdpro %d sdpro %d\n", |
| | 1104 | | PVM_VER, DDPROTOCOL, TDPROTOCOL, SDPROTOCOL);
|
| | 1105 | | time_temp = (PVM_TIMET) tnow.tv_sec;
|