Ver Fonte

* Added support for $b/$u

svn: 1265
Bryan Drewery há 22 anos atrás
pai
commit
f11df69244
2 ficheiros alterados com 52 adições e 14 exclusões
  1. 1 0
      doc/UPDATES
  2. 51 14
      src/dccutil.c

+ 1 - 0
doc/UPDATES

@@ -37,6 +37,7 @@ This is a summary of ChangeLog basically.
 * Alphabetized config list
 * cmd_mns_host now accepts multiple hosts
 * Fixed cmd_comment to work like cmd_whois/match with regards to accessing higher level users.
+* Added proper support for $b/$u 
 
 1.1.9
 

+ 51 - 14
src/dccutil.c

@@ -125,30 +125,67 @@ void dprintf(int idx, const char *format, ...)
     }
     return;
   } else { /* normal chat text */
-    if (!dcc[idx].simul && coloridx(idx)) {
-      int i;
+    if (coloridx(idx)) {
+      int i, schar = 0, inbold = 0, inunderline = 0;
       char buf3[1024] = "", buf2[1024] = "", c = 0;
 
       for (i = 0 ; i < len ; i++) {
         c = buf[i];
         buf2[0] = 0;
-
-        if (c == ':') {
-          sprintf(buf2, "%s%c%s", LIGHTGREY(idx), c, COLOR_END(idx));
-        } else if (c == '@') {
-          sprintf(buf2, "%s%c%s", BOLD(idx), c, BOLD_END(idx));
-/*        } else if (c == ']' || c == '>' || c == ')' || c == '[' || c == '<' || c == '(') { */
-        } else if (c == '>' || c == ')' || c == '<' || c == '(') {
-          sprintf(buf2, "%s%c%s", GREEN(idx), c, COLOR_END(idx));
-        } else {
-          sprintf(buf2, "%c", c);
+ 
+        if (schar) {	/* These are for $X replacements */
+          schar--;	/* Unset identifier int */
+
+          switch (c) {
+            case 'b':
+              if (!inbold) {
+                sprintf(buf2, "%s", BOLD(idx));
+                inbold++;
+              } else {
+                sprintf(buf2, "%s", BOLD_END(idx));
+                inbold--;
+              }
+              break;
+            case 'u':
+              if (!inunderline) {
+                sprintf(buf2, "%s", UNDERLINE(idx));
+                inunderline++;
+              } else {
+                sprintf(buf2, "%s", UNDERLINE_END(idx));
+                inunderline--;
+              }
+              break;
+            default:
+              sprintf(buf2, "$%c", c);		/* No identifier, put the '$' back in */
+              break;
+          }
+        } else {    	/* These are character replacements */
+          switch (c) {
+            case '$':
+              schar++;
+              break;
+            case ':':
+              sprintf(buf2, "%s%c%s", LIGHTGREY(idx), c, COLOR_END(idx));
+              break;
+            case '@':
+              sprintf(buf2, "%s%c%s", BOLD(idx), c, BOLD_END(idx));
+              break;
+            case '>':
+            case ')':
+            case '<':
+            case '(':
+              sprintf(buf2, "%s%c%s", GREEN(idx), c, COLOR_END(idx));
+              break;
+            default:
+              sprintf(buf2, "%c", c);
+              break;
+          }
         }
-/*        sprintf(buf3, "%s%s", buf3 ? buf3 : "", buf2 ? buf2 : ""); */
+
         sprintf(buf3, "%s%s", (buf3 && buf3[0]) ? buf3 : "", (buf2 && buf2[0]) ? buf2 : "");
       }
       buf3[strlen(buf3)] = 0;
       strcpy(buf, buf3);
-/*      strncpyz(buf, buf2, sizeof buf); */
     }
     buf[sizeof(buf) - 1] = 0;
     len = strlen(buf);