}
-int GetServerStatus(StrBuf *Line, long* FullState)
+int GetServerStatusMsg(StrBuf *Line, long* FullState, int PutImportantMessage, int MajorOK)
{
+ int rc;
if (FullState != NULL)
*FullState = StrTol(Line);
- return ChrPtr(Line)[0] - 48;
+ rc = ChrPtr(Line)[0] - 48;
+ if ((!PutImportantMessage) ||
+ (MajorOK == rc)||
+ (StrLength(Line) <= 4))
+ return rc;
+
+ AppendImportantMessage(ChrPtr(Line) + 4, StrLength(Line) - 4);
+ return rc;
}
int tcp_connectsock(char *, char *);
int serv_getln(char *strbuf, int bufsize);
int StrBuf_ServGetln(StrBuf *buf);
-int GetServerStatus(StrBuf *Line, long* FullState);
+
+/**
+ * @brief parse & check the server reply
+ * @param Line the line containing the server reply
+ * @param FullState if you need more than just the major number, this is returns it. Ignored if NULL.
+ * @param PutImportantMessage if you want to forward the text part of the server reply to the user, specify 1;
+ * the result will be put into the 'Important Message' framework.
+ * @param MajorOK in case of which major number not to put the ImportantMessage? 0 for all.
+ * @return the most significant digit of the server status
+ * /
+int GetServerStatusMsg(StrBuf *Line, long* FullState, int PutImportantMessage, int MajorOK);
+/* to migrate old calls.... */
+#define GetServerStatus(a, b) GetServerStatusMsg(a, b, 0, 0)
+
int serv_puts(const char *string);
int serv_write(const char *buf, int nbytes);