]> andersk Git - libfaim.git/blobdiff - utils/faimtest/faimtest.c
- Thu Mar 29 13:05:50 PST 2001
[libfaim.git] / utils / faimtest / faimtest.c
index 35ca6a224993e727bd3ae94a1a79a6f84f11eac3..06102424c434c4d340042d9e4103462b6352c5f0 100644 (file)
@@ -260,7 +260,7 @@ int logout(void)
 {
 
   if (ohcaptainmycaptain)
-    aim_send_im(&aimsess, aim_getconn_type(&aimsess, AIM_CONN_TYPE_BOS), ohcaptainmycaptain, 0, "ta ta...");
+    aim_send_im(&aimsess, aim_getconn_type(&aimsess, AIM_CONN_TYPE_BOS), ohcaptainmycaptain, 0, "ta ta...", strlen("ta ta..."));
 
   aim_session_kill(&aimsess);
 
@@ -797,15 +797,42 @@ int faimtest_handleredirect(struct aim_session_t *sess, struct command_rx_struct
   return 1;
 }
 
-static int getaimdata(unsigned char *buf, int buflen, unsigned long offset)
+static int getaimdata(unsigned char *buf, int buflen, unsigned long offset, const char *modname)
 {
   FILE *f;
+  static const char defaultmod[] = "aim.exe";
+  char *filename = NULL;
 
-  if (!(f = fopen(aimbinarypath, "r"))) {
+  if (modname) {
+
+    if (!(filename = malloc(strlen(aimbinarypath)+1+strlen(modname)+4+1))) {
+      dperror("memrequest: malloc");
+      return -1;
+    }
+
+    sprintf(filename, "%s/%s.ocm", aimbinarypath, modname);
+
+  } else {
+
+    if (!(filename = malloc(strlen(aimbinarypath)+1+strlen(defaultmod)+1))) {
+      dperror("memrequest: malloc");
+      return -1;
+    }
+
+    sprintf(filename, "%s/%s", aimbinarypath, defaultmod);
+
+  }
+
+  dvprintf("memrequest: loading %d bytes from 0x%08lx in \"%s\"...\n", buflen, offset, filename);
+
+  if (!(f = fopen(filename, "r"))) {
     dperror("memrequest: fopen");
+    free(filename);
     return -1;
   }
 
+  free(filename);
+
   if (fseek(f, offset, SEEK_SET) == -1) {
     dperror("memrequest: fseek");
     fclose(f);
@@ -835,10 +862,12 @@ static int faimtest_memrequest(struct aim_session_t *sess, struct command_rx_str
   va_list ap;
   unsigned long offset, len;
   unsigned char *buf;
+  char *modname;
   
   va_start(ap, command);
   offset = va_arg(ap, unsigned long);
   len = va_arg(ap, unsigned long);
+  modname = va_arg(ap, char *);
   va_end(ap);
 
   if (!(buf = malloc(len))) {
@@ -846,15 +875,13 @@ static int faimtest_memrequest(struct aim_session_t *sess, struct command_rx_str
     return 0;
   }
 
-  if (aimbinarypath && (getaimdata(buf, len, offset) == len)) {
-
-    dvprintf("memrequest: sending %ld bytes from 0x%08lx in %s...\n", len, offset, aimbinarypath);
+  if (aimbinarypath && (getaimdata(buf, len, offset, modname) == len)) {
 
     aim_sendmemblock(sess, command->conn, offset, len, buf);
 
   } else {
 
-    dprintf("memrequest: unable to use AIM binary, sending defaults...\n");
+    dvprintf("memrequest: unable to use AIM binary (\"%s/%s\"), sending defaults...\n", aimbinarypath, modname);
 
     aim_sendmemblock(sess, command->conn, offset, len, NULL);
 
@@ -1037,7 +1064,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru
 
   } else if (strstr(tmpstr, "goodday")) {
 
-      aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "Good day to you too.");
+      aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "Good day to you too.", strlen("Good day to you too."));
 
   } else if (strstr(tmpstr, "warnme")) {
 
@@ -1063,7 +1090,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru
 
     if (!ohcaptainmycaptain) {
 
-      aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "I have no owner!");
+      aim_send_im(sess, command->conn, userinfo->sn, AIM_IMFLAGS_ACK, "I have no owner!", strlen("I have no owner!"));
 
     } else {
       struct aim_conn_t *newconn;
@@ -1117,7 +1144,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru
 
   } else if (!strncmp(tmpstr, "reqsendmsg", 10)) {
 
-    aim_send_im(sess, command->conn, ohcaptainmycaptain, 0, "sendmsg 7900");
+    aim_send_im(sess, command->conn, ohcaptainmycaptain, 0, "sendmsg 7900", strlen("sendmsg 7900"));
 
   } else if (!strncmp(tmpstr, "reqauth", 7)) {
 
@@ -1151,7 +1178,7 @@ static int faimtest_handlecmd(struct aim_session_t *sess, struct command_rx_stru
        newbuf[z] = (z % 10)+0x30;
       }
       newbuf[i] = '\0';
-      aim_send_im(sess, command->conn, userinfo->sn, 0, newbuf);
+      aim_send_im(sess, command->conn, userinfo->sn, 0, newbuf, strlen(newbuf));
       free(newbuf);
     }
 
@@ -1803,7 +1830,7 @@ int faimtest_chat_incomingmsg(struct aim_session_t *sess, struct command_rx_stru
   if (strcmp(userinfo->sn, sess->sn) != 0)
     {
       sprintf(tmpbuf, "(%s said \"%s\")", userinfo->sn, msg);
-      aim_chat_send_im(sess, command->conn, tmpbuf);
+      aim_chat_send_im(sess, command->conn, 0, tmpbuf, strlen(tmpbuf));
     }
 
   return 1;
This page took 0.43502 seconds and 4 git commands to generate.