#include "stdio.h" #include "stdlib.h" #include "astring.h" char *spawn(char *command) { char *buf; FILE *ptr; long len, blen; char *result, *temp; buf = calloc(sizeof(char),BUFSIZ); len = 0; result = calloc(sizeof(char),1); strcpy(result,""); temp = calloc(sizeof(char),1); strcpy(result,""); if ((ptr = popen(command, "r")) != NULL) { while (fgets(buf, BUFSIZ, ptr) != NULL) { blen = strlen(buf); len = len + blen; result = calloc(sizeof(char),len+1); if (len > blen) strcpy(result, temp); strcat(result, buf); if (len > blen) free(temp); temp = calloc(sizeof(char),len+1); strcpy(temp, result); } pclose(ptr); free(temp); } else { printf("error\n"); } len = strpos(result, "\n"); if (len < 0) { free(result); result = calloc(sizeof(char),1); strcpy(result,""); } return result; }