Mercurial > pidgin.yaz
changeset 3277:ec20536eaeb0
[gaim-migrate @ 3295]
Arun says to do this.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Tue, 28 May 2002 08:40:48 +0000 |
parents | a334dada69c3 |
children | 30ca1b76ad0c |
files | ChangeLog src/protocols/zephyr/ZSubs.c src/protocols/zephyr/zephyr.c |
diffstat | 3 files changed, 57 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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 <internal.h> #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;i<nitems;i++) { list[i*3] = sublist[i].zsub_class; list[i*3+1] = sublist[i].zsub_classinst; - if (sublist[i].zsub_recipient && *sublist[i].zsub_recipient && - *sublist[i].zsub_recipient != '*') - list[i*3+2] = ZGetSender(); - else - list[i*3+2] = ""; + recip = sublist[i].zsub_recipient; + if (recip && *recip == '*') + recip++; + if (!recip || (*recip != 0 && *recip != '@')) + recip = ZGetSender(); + list[i*3+2] = recip; } start = -1;
--- a/src/protocols/zephyr/zephyr.c Tue May 28 08:05:59 2002 +0000 +++ b/src/protocols/zephyr/zephyr.c Tue May 28 08:40:48 2002 +0000 @@ -316,7 +316,7 @@ static void handle_message(ZNotice_t notice, struct sockaddr_in from) { if (!g_strcasecmp(notice.z_class, LOGIN_CLASS)) { - /* well, we'll be updating in 2 seconds anyway, might as well ignore this. */ + /* well, we'll be updating in 20 seconds anyway, might as well ignore this. */ } else if (!g_strcasecmp(notice.z_class, LOCATE_CLASS)) { if (!g_strcasecmp(notice.z_opcode, LOCATE_LOCATE)) { int nlocs; @@ -359,6 +359,8 @@ } else { char *buf, *buf2; char *send_inst; + char *realmptr; + char *sendertmp; char *ptr = notice.z_message + strlen(notice.z_message) + 1; int len = notice.z_message_len - (ptr - notice.z_message); int away; @@ -387,10 +389,24 @@ zt2->open = 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 = '@';