# HG changeset patch # User Sean Egan # Date 1022575248 0 # Node ID ec20536eaeb0b8e81e1d28a3056e96fd5b3b457a # Parent a334dada69c30317a62ab94450094982fe75d067 [gaim-migrate @ 3295] Arun says to do this. committer: Tailor Script diff -r a334dada69c3 -r ec20536eaeb0 ChangeLog --- a/ChangeLog Tue May 28 08:05:59 2002 +0000 +++ b/ChangeLog Tue May 28 08:40:48 2002 +0000 @@ -20,6 +20,7 @@ the hat to Christian Hammond for the graphic) * Conversation struct has pointer to toolbar (thanks Brent Priddy and Paul Miller) + * Zephyr fixes (thanks, (Arun A. Tharuvai) version 0.58 (05/13/2002): * Bulgarian translation added (Thanks, Igel Itzo) diff -r a334dada69c3 -r ec20536eaeb0 src/protocols/zephyr/ZSubs.c --- a/src/protocols/zephyr/ZSubs.c Tue May 28 08:05:59 2002 +0000 +++ b/src/protocols/zephyr/ZSubs.c Tue May 28 08:40:48 2002 +0000 @@ -5,7 +5,7 @@ * Created by: Robert French * * $Source$ - * $Author: warmenhoven $ + * $Author: seanegan $ * * Copyright (c) 1987,1988 by the Massachusetts Institute of Technology. * For copying and distribution information, see the file @@ -16,7 +16,7 @@ #include #ifndef lint -static const char rcsid_ZSubscriptions_c[] = "$Id: ZSubs.c 2432 2001-10-03 19:38:28Z warmenhoven $"; +static const char rcsid_ZSubscriptions_c[] = "$Id: ZSubs.c 3295 2002-05-28 08:40:48Z seanegan $"; #endif static Code_t Z_Subscriptions __P((register ZSubscription_t *sublist, @@ -76,6 +76,7 @@ ZNotice_t notice; char header[Z_MAXHEADERLEN]; char **list; + char *recip; int hdrlen; int size_avail = Z_MAXPKTLEN-Z_FRAGFUDGE; /* space avail for data, adjusted below */ @@ -117,11 +118,12 @@ for (i=0;iopen = TRUE; serv_got_joined_chat(zgc, zt2->id, zt2->name); } - send_inst = g_strdup_printf("%s %s", notice.z_sender, - notice.z_class_inst); + /* If the person is in the default Realm, then strip the + Realm from the sender field */ + sendertmp = g_strdup_printf("%s",notice.z_sender); + realmptr = strchr(sendertmp,'@'); + realmptr++; + if (!g_strcasecmp(realmptr,ZGetRealm())) { + realmptr--; + sprintf(realmptr,"%c",'\0'); + send_inst = g_strdup_printf("%s %s",sendertmp, + notice.z_class_inst); + + } else { + send_inst = g_strdup_printf("%s %s",notice.z_sender, + notice.z_class_inst); + } serv_got_chat_in(zgc, zt2->id, send_inst, FALSE, buf2, time(NULL)); + g_free(sendertmp); g_free(send_inst); } free_triple(zt1); @@ -498,13 +514,15 @@ strip_comments(buff); if (buff[0]) { triple = g_strsplit(buff, ",", 3); - if (triple[0] && triple[1] && triple[2]) { + if (triple[0] && triple[1] ) { char *tmp = g_strdup_printf("%s@%s", g_getenv("USER"), ZGetRealm()); char *atptr; sub.zsub_class = triple[0]; sub.zsub_classinst = triple[1]; - if (!g_strcasecmp(triple[2], "%me%")) { + if(triple[2] == NULL) { + recip = g_malloc0(1); + } else if (!g_strcasecmp(triple[2], "%me%")) { recip = g_strdup_printf("%s@%s", g_getenv("USER"), ZGetRealm()); } else if (!g_strcasecmp(triple[2], "*")) { @@ -608,6 +626,7 @@ FILE *fd; char *fname; + char** triple; fname = g_strdup_printf("%s/.zephyr.subs", g_get_home_dir()); fd = fopen(fname, "w"); @@ -618,7 +637,19 @@ while (s) { zt = s->data; - fprintf(fd, "%s\n", zt->name); + triple = g_strsplit(zt->name,",",3); + if (triple[2] != NULL) { + if (!g_strcasecmp(triple[2], "")) { + fprintf(fd, "%s,%s,*\n", triple[0], triple[1]); + } else if (!g_strcasecmp(triple[2], ZGetSender())) { + fprintf(fd, "%s,%s,%%me%%\n",triple[0],triple[1]); + } else { + fprintf(fd, "%s\n", zt->name); + } + } else { + fprintf(fd, "%s,%s,*\n",triple[0], triple[1]); + } + g_free(triple); s = s->next; } g_free(fname); @@ -630,7 +661,7 @@ GSList *gr, *m; struct group *g; struct buddy *b; - char *ptr, *fname; + char *ptr, *fname, *ptr2; FILE *fd; fname = g_strdup_printf("%s/.anyone", g_get_home_dir()); @@ -646,8 +677,15 @@ m = g->members; while (m) { b = m->data; - if ((ptr = strchr(b->name, '@')) != NULL) - *ptr = '\0'; + if ((ptr = strchr(b->name, '@')) != NULL) { + ptr2 = ptr + 1; + /* We should only strip the realm name if the principal + is in the user's realm + */ + if (!g_strcasecmp(ptr2,ZGetRealm())) { + *ptr = '\0'; + } + } fprintf(fd, "%s\n", b->name); if (ptr) *ptr = '@';