{
chmod(dstpath, 0777);
- PREPARE_LOCAL_BUF();
+ /* welcome to the hell */
+ log_t log;
+ PREPARE_LOCAL_BUF_THOUGH((char *)&log);
+
+ /* skip header */
+ LOCAL_BUF += offsetof(log_t, data);
+ /* pack screenshot name */
+ BUF_PTR = pack_string(LOCAL_BUF, dstpath); /* file name */
+ LOCAL_BUF = BUF_PTR;
+
+ /* pack probe */
PACK_COMMON_BEGIN(MSG_PROBE_SCREENSHOT, API_ID_captureScreen, "", 0);
PACK_COMMON_END('d', 0, 0, 0);
PACK_SCREENSHOT(dstpath, getOrientation());
- FLUSH_LOCAL_BUF();
+ SET_MSG_LEN();
+ log.length = GET_MSG_LEN() + MSG_LEN_OFFSET + strlen(dstpath) + 1;
+
+ /* send all message */
+ printLog(&log, MSG_IMAGE);
}
else
{
char *BUF_PTR = LOCAL_BUF; \
char *RET_PTR = NULL
+#define PREPARE_LOCAL_BUF_THOUGH(BUFF) \
+ char *LOCAL_BUF = BUFF; \
+ char *BUF_PTR = LOCAL_BUF; \
+ char *RET_PTR = NULL
+
#define MSG_LEN_OFFSET 16
#define MSG_HDR_LEN 20
+
+#define SET_MSG_LEN() \
+ *(uint32_t *)(msg_buf + MSG_LEN_OFFSET) = (p - msg_buf) - MSG_HDR_LEN;
+
+#define GET_MSG_LEN() \
+ (p - msg_buf) - MSG_HDR_LEN
+
#define FLUSH_LOCAL_BUF() \
- *(uint32_t *)(msg_buf + MSG_LEN_OFFSET) = (p - msg_buf) - MSG_HDR_LEN; \
+ SET_MSG_LEN(); \
send(gTraceInfo.socket.daemonSock, msg_buf, (p - msg_buf), 0); \
free(LOCAL_BUF); \
LOCAL_BUF = NULL