| 56 | |
| 57 | |
| 58 | int hostent_shm_cpy(struct hostent *dst, struct hostent* src) |
| 59 | { |
| 60 | int i; |
| 61 | char *p; |
| 62 | |
| 63 | for( i=0 ; src->h_addr_list[i] ; i++ ); |
| 64 | |
| 65 | dst->h_addr_list = (char**)shm_malloc |
| 66 | (i * (src->h_length + sizeof(char*)) + sizeof(char*)); |
| 67 | if (dst->h_addr_list==NULL) |
| 68 | return -1; |
| 69 | |
| 70 | p = ((char*)dst->h_addr_list) + (i+1)*sizeof(char*); |
| 71 | dst->h_addr_list[i] = 0; |
| 72 | |
| 73 | for( i-- ; i>=0 ; i-- ) { |
| 74 | dst->h_addr_list[i] = p; |
| 75 | memcpy( dst->h_addr_list[i], src->h_addr_list[i], src->h_length ); |
| 76 | p += src->h_length; |
| 77 | } |
| 78 | |
| 79 | dst->h_addr = dst->h_addr_list[0]; |
| 80 | dst->h_addrtype = src->h_addrtype; |
| 81 | dst->h_length = src->h_length; |
| 82 | return 0; |
| 83 | } |
| 84 | |
| 85 | |
| 86 | void free_shm_hostent(struct hostent *dst) |
no test coverage detected