| | 30 | | pvmfstartpvmd_ (args_ptr, block, info, args_len) |
| | 31 | | char * args_ptr; int args_len; |
| | 32 | | int *block; |
| | 33 | | int *info; |
| | 34 | | { |
| | 35 | | char *nargs; |
| | 36 | | int ac = 0; |
| | 37 | | char **av; |
| | 38 | | register char *ch; |
| | 39 | | register char *beg; |
| | 40 | | register char *end; |
| | 41 | | register int len; |
| | 42 | | register int i; |
| | 43 | | |
| | 44 | | #if ( DEBUG ) |
| | 45 | | |
| | 46 | | printf( "%d \"%s\"\n", args_len, args_ptr ); |
| | 47 | | #endif |
| | 48 | | |
| | 49 | | if ( args_len == 0 ) { |
| | 50 | | av = (char **)0; |
| | 51 | | goto pvmd; |
| | 52 | | } else { |
| | 53 | | if ( ( nargs = TALLOC( args_len + 1, char, "nargs" ) )
|
| | 54 | | == NULL ) {
|
| | 55 | | pvmlogerror("pvmfstartpvmd() can't get memory\n"); |
| | 56 | | goto bail; |
| | 57 | | } |
| | 58 | | |
| | 59 | | strncpy( nargs, args_ptr, args_len ); |
| | 60 | | nargs[args_len] = '\0'; |
| | 61 | | } |
| | 62 | | ch = nargs; |
| | 63 | | |
| referenced by returned value | 64 | | if ( ( av = TALLOC( 32, char *, "av" ) ) == NULL ) { | Problem | | referenced by returned value |
|
| | 65 | | pvmlogerror("pvmfstartpvmd() can't get memory\n"); |
| | 66 | | PVM_FREE( nargs );
|
| | 67 | | goto bail; |
| | 68 | | } |
| | 69 | | |
| referenced by av | 70 | | for ( ; ; ) { |
| | 71 | | |
| | 72 | | for( ; *ch == ' ' || *ch == '\t'; ch++ ); |
| | 73 | | beg = ch; |
| | 74 | | |
| | 75 | | for( ; *ch != ' ' && *ch != '\t' && *ch != '\0'; ch++ ); |
| | 76 | | end = ch; |
| | 77 | | len = end - beg; |
| | 78 | | |
| | 79 | | |
| | 80 | | if ( len == 0 ) break; |
| | 81 | | |
| | 82 | | if ( ( av[ac] = TALLOC( len + 1, char, "av[ac]" ) ) == NULL ) {
|
| | 83 | | pvmlogerror("pvmfstartpvmd() can't get memory\n"); |
| | 84 | | PVM_FREE( nargs );
|
| | 85 | | for ( i = 0; i < ac; i++ ) |
| | 86 | | PVM_FREE( av[i] );
|
| | 87 | | goto bail; |
| | 88 | | } |
| | 89 | | strncpy( av[ac], beg, len ); |
| | 90 | | *( av[ac] + len ) = '\0'; |
| | 91 | | ac++; |
| | 92 | | } |
| | 93 | | #if ( DEBUG ) |
| | 94 | | printf( "ac is %d\n", ac ); |
| | 95 | | #endif |
| | 96 | | if ( ac == 0 ) { |
| | 97 | | |
| | | | ... |
| | 102 | | |
| | 103 | | for ( i = 0; i < ac; i++ ) |
| | 104 | | printf( "av[%2d] is \"%s\"\n", i, av[i] ); |
| | 105 | | #endif |
| | 106 | | } |
| | 107 | | PVM_FREE( nargs );
|
| | 108 | | pvmd: |
| | 109 | | |
| | 110 | | *info = pvm_start_pvmd( ac, av, *block ); |
| | 111 | | return; |
| | 112 | | bail: |
| | 113 | | *info = -1; |
| leaked | 114 | | return; |
| | 115 | | } |