OK! ...Basically, I thought you could return a character array using the prototype char ** methodName() BUT, this doesn't work for my function!!!! Maybe I am doin something very wrong somewhere!!!! ...Well, here is my function......

NOTE: This is a part of my university coursework! It is a coursework to implement a client and server to comply with the coffeepot protocol, HTCPCP!!!
This is the propfind function for my server!!!! ...Its not complete, but I really need to find out how to return the char array "theMessage" to the calling function!!!

Code:
/***********************************************************************************/
/* FUNCTION TO BUILD A PROPFIND RESPONSE FOR THE CLIENTS PROPFIND REQUEST          */
/* RETURNS: A POINTER TO A CHAR ARRAY THAT CONTAINS THE RESPONSE MESSAGE           */
/*    NOTE: WILL RETURN "NULL" IF THERE WAS AN ERROR IN BUILDING RESPONSE!!!       */
/***********************************************************************************/
char ** propfindRequest(char * requestDetail, char * clientIP) {
  
  char theMessage[MAXBUFF];      /* VARIABLE TO STORE THE SERVER RESPONSE MESSAGE */
  char potNoS[2];                /* STORE THE POT NUMBER IN STRING FORMAT */
  int potNo;                     /* STORE THE POT NUMBER IN INTEGER FORMAT */
  
  /* WHICH PROPFIND IS CLIENT SENDING??? */
  if (strcasecmp(requestDetail, "SERVER") == 0) { /* PROPFIND ON SERVER */
    if (sprintf(theMessage, "%s %sServer Properties:\nCoffeepot server version: %s\nNumber of coffeepots: %d\r\n", VERSION, OK, VERSION, POTS) < 0) {
      /* ERROR BUILDING RESPONSE! */
      printf("ERROR! Could not build a response for client (%s)\n", clientIP);
      strcpy(theMessage, "NULL");
      return theMessage;
    }
    else {
      printf("(%s) SENT A PROPFIND REQUEST (SERVER)\n", clientIP);
      return theMessage;
    }
  }
  else if (strncasecmp(requestDetail, "POT-", 4) == 0) {   /* PROPFIND REQUEST FOR POT-X */
    
    /* FIND OUT THE COFFEEPOT NUMBER CLIENT WISHES TO PROPFIND */              
    if (requestDetail[5]) { /* POT NUMBER IS DOUBLE FIGURES (ABOVE 9) */
      char potNoS[2];
      potNoS[0] = requestDetail[4];
      potNoS[1] = requestDetail[5];
      potNo = atoi(potNoS);          /* CONVERT FROM ASCII TO INT */
    }
    else if ((requestDetail[5]) && (requestDetail[6])) { /* POT NUMBER IS TRIPPLE FIGURES OR MORE - DEFINATLEY NOT SUPPORTED BY THIS SERVER */
      potNo = -1; /* SET TO INVALID POT NUMBER */
    }
    else { /* POT NUMBER IS SINGLE FIGURES */
      potNo = requestDetail[4];
      potNo -= '0';              /* CONVER FROM CHAR TO INT */
    }
    /* IS THE POT NUMBER VALID? */
    if ((potNo <= 0) || (potNo > POTS)){
      /* BUILD THE PROPFIND RESPONSE MESSAGE */
      if (sprintf(theMessage, "%s %sERROR! No such coffeepot (pot-%d) exists on this server!\r\n", VERSION, SERVICE_UNAVAILABLE, potNo) < 0) {
	/* AN ERROR BUILDING RESPONSE */
        printf("ERROR! Could not build response for client (%s)\n", clientIP);
        strcpy(theMessage, "NULL");
        return theMessage;
      }
      else {
        /* AN INVALID PROPFIND REQUEST WAS SENT! */
        printf("(%s) JUST SENT AN INVALID PROPFIND REQUEST (POT-%d)\n", clientIP, potNo);
        return theMessage;
      }
    }
    else {
      bzero(theMessage, MAXBUFF);
      /* RESPOND TO CLIENT WITH THE PROPERTIES OF THE REQUESTED POT! */
      if (sprintf(theMessage, "%s %sProperties for POT-%d\nCan store %d cup(s) of coffee\nContains %d cups of coffee\r\n", 
		  VERSION, OK, potNo, FULL, theMachine.coffeepots[potNo - 1]) < 0) {
        /* AN ERROR BUILDING RESPONSE */
	printf("ERROR! Could not build response for client (%s)\n", clientIP);
        strcpy(theMessage, "NULL");
        return theMessage;
      }
      else {
        return theMessage;
      }
    }
    /* BAD PROPFIND REQUEST */
    else {
      /* RESPOND TO CLIENT */
      if (sprintf(theMessage, "%s %s ERROR! Un-Recognised PROPFIND request!\r\n", VERSION, BAD_REQUEST) < 0) {
	/* AN ERROR BUILDING RESPONSE!!! */
        printf("ERROR! Could not build response for client (%s)\n", clientIP);
        strcpy(theMessage, "NULL");
        return theMessage;
      }
      else {
        return theMessage;
      }
    }
  }
} /* propfindRequest() */
There is also a syntax error, but ignore this as all i need to know is how to return the char array!!!!!

here is the output from the compiler as it stands....

Code:
cd ~/socket/
gcc -o server server.c
server.c: In function `propfindRequest':
server.c:218: warning: return from incompatible pointer type
server.c:218: warning: function returns address of local variable
server.c:222: warning: return from incompatible pointer type
server.c:222: warning: function returns address of local variable
server.c:248: warning: return from incompatible pointer type
server.c:248: warning: function returns address of local variable
server.c:253: warning: return from incompatible pointer type
server.c:253: warning: function returns address of local variable
server.c:264: warning: return from incompatible pointer type
server.c:264: warning: function returns address of local variable
server.c:267: warning: return from incompatible pointer type
server.c:267: warning: function returns address of local variable
server.c:271: error: syntax error before "else"
server.c:277: warning: return from incompatible pointer type
server.c:277: warning: function returns address of local variable
server.c:280: warning: return from incompatible pointer type
server.c:280: warning: function returns address of local variable
server.c: At top level:
server.c:283: error: syntax error before '}' token
server.c: In function `main':
server.c:442: warning: passing arg 2 of `propfindRequest' makes pointer from integer without a cast
server.c:442: error: too many arguments to function `propfindRequest'

Compilation exited abnormally with code 1 at Thu Mar 30 12:55:39
Many thanks, Matt.