Changeset de03334
- Timestamp:
- Jul 3, 2003, 9:31:03 PM (20 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 5b85d19
- Parents:
- 210c261
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r210c261 rde03334 6 6 Cleaned up some warnings from linux gcc. 7 7 Fixed bug that can cause response stuff to crash 8 Idletimes now appear in the buddylisting 8 9 9 10 2.0.6 -
aim.c
r6a87084 rde03334 157 157 } 158 158 owl_global_set_aimloggedin(&g, screenname); 159 160 owl_buddylist_request_idletimes(owl_global_get_buddylist(&g)); 159 161 return(0); 160 162 } … … 220 222 221 223 } 224 225 void owl_aim_get_idle(char *screenname) 226 { 227 aim_getinfo(owl_global_get_aimsess(&g), 228 aim_getconn_type(owl_global_get_aimsess(&g), AIM_CONN_TYPE_BOS), 229 screenname, 230 AIM_GETINFO_GENERALINFO); 231 } 232 222 233 223 234 void owl_aim_chat_join(char *chatroom) … … 977 988 va_end(ap); 978 989 979 return (1); 990 /* right now the only reason we call this is for idle times */ 991 owl_buddylist_set_idletime(owl_global_get_buddylist(&g), userinfo->sn, userinfo->idletime); 992 return(1); 980 993 981 994 printf("userinfo: sn: %s\n", userinfo->sn); -
buddylist.c
rceb8cfb rde03334 6 6 { 7 7 owl_list_create(&(b->buddies)); 8 owl_list_create(&(b->idletimes)); 8 9 } 9 10 … … 16 17 int i, j, found; 17 18 owl_message *m; 19 int *zero; 18 20 19 21 found=0; … … 27 29 28 30 if (!found) { 31 /* add the buddy */ 29 32 owl_list_append_element(&(b->buddies), owl_strdup(screenname)); 33 zero=owl_malloc(sizeof(int)); 34 *zero=0; 35 owl_list_append_element(&(b->idletimes), zero); 30 36 37 /* do a request for idle time */ 38 owl_buddylist_request_idletimes(owl_global_get_buddylist(&g)); 39 31 40 /* are we ingoring login messages for a while? */ 32 41 if (!owl_timer_is_expired(owl_global_get_aim_login_timer(&g))) return; … … 40 49 1); 41 50 owl_global_messagequeue_addmsg(&g, m); 51 42 52 } 43 53 } … … 57 67 found=1; 58 68 owl_free(owl_list_get_element(&(b->buddies), i)); 69 owl_free(owl_list_get_element(&(b->idletimes), i)); 59 70 owl_list_remove_element(&(b->buddies), i); 71 owl_list_remove_element(&(b->idletimes), i); 60 72 break; 61 73 } … … 75 87 } 76 88 89 /* send requests to the AIM server to retrieve info 90 * on all buddies. The AIM callback then fills in the 91 * values when the responses are received 92 */ 93 void owl_buddylist_request_idletimes(owl_buddylist *b) 94 { 95 int i, j; 96 97 j=owl_buddylist_get_size(b); 98 for (i=0; i<j; i++) { 99 owl_aim_get_idle(owl_buddylist_get_buddy(b, i)); 100 } 101 } 102 77 103 /* return the number of logged in buddies */ 78 104 int owl_buddylist_get_size(owl_buddylist *b) … … 87 113 } 88 114 115 /* get the idle time for buddy number 'n' */ 116 int owl_buddylist_get_idletime(owl_buddylist *b, int n) 117 { 118 int *foo; 119 120 foo=owl_list_get_element(&(b->idletimes), n); 121 return(*foo); 122 } 123 124 /* set the idle time for user 'screenname'. If the given 125 * screenname is not on the buddy list do nothing 126 */ 127 void owl_buddylist_set_idletime(owl_buddylist *b, char *screenname, int seconds) 128 { 129 int i, j, *idle; 130 131 j=owl_buddylist_get_size(b); 132 for (i=0; i<j; i++) { 133 if (!strcasecmp(owl_list_get_element(&(b->buddies), i), screenname)) { 134 owl_free(owl_list_get_element(&(b->idletimes), i)); 135 idle=owl_malloc(sizeof(int)); 136 *idle=seconds; 137 owl_list_replace_element(&(b->idletimes), i, idle); 138 return; 139 } 140 } 141 } 142 89 143 /* remove all buddies from the list */ 90 144 void owl_buddylist_clear(owl_buddylist *b) { 91 145 owl_list_free_all(&(b->buddies), owl_free); 146 owl_list_free_all(&(b->idletimes), owl_free); 92 147 owl_list_create(&(b->buddies)); 148 owl_list_create(&(b->idletimes)); 93 149 } -
functions.c
re6449bc rde03334 2844 2844 void owl_function_buddylist(int aim, int zephyr, char *file) 2845 2845 { 2846 int i, j ;2846 int i, j, idle; 2847 2847 owl_fmtext fm; 2848 2848 owl_buddylist *b; 2849 char *foo, *timestr; 2849 2850 #ifdef HAVE_LIBZEPHYR 2850 2851 char *ourfile, *tmp, buff[LINE], *line; … … 2862 2863 j=owl_buddylist_get_size(b); 2863 2864 for (i=0; i<j; i++) { 2864 owl_fmtext_append_normal(&fm, " "); 2865 owl_fmtext_append_normal(&fm, owl_buddylist_get_buddy(b, i)); 2866 owl_fmtext_append_normal(&fm, "\n"); 2865 idle=owl_buddylist_get_idletime(b, i); 2866 if (idle!=0) { 2867 timestr=owl_util_seconds_to_timestr(idle); 2868 } else { 2869 timestr=owl_strdup(""); 2870 } 2871 foo=owl_sprintf(" %-10.10s %-15.15s\n", 2872 owl_buddylist_get_buddy(b, i), 2873 timestr); 2874 owl_fmtext_append_normal(&fm, foo); 2875 owl_free(timestr); 2876 owl_free(foo); 2867 2877 } 2868 2878 } -
global.c
r210c261 rde03334 95 95 owl_timer_create_countdown(&(g->aim_noop_timer), 30); 96 96 owl_timer_create_countdown(&(g->aim_ignorelogin_timer), 0); 97 owl_timer_create_countdown(&(g->aim_buddyinfo_timer), 60); 97 98 owl_buddylist_init(&(g->buddylist)); 98 99 g->response=NULL; … … 804 805 return(0); 805 806 } 807 808 owl_timer *owl_global_get_aim_buddyinfo_timer(owl_global *g) 809 { 810 return(&(g->aim_buddyinfo_timer)); 811 } -
owl.c
re6449bc rde03334 323 323 owl_function_debugmsg("Doing aim processing"); 324 324 owl_aim_process_events(); 325 326 if (owl_timer_is_expired(owl_global_get_aim_buddyinfo_timer(&g))) { 327 owl_buddylist_request_idletimes(owl_global_get_buddylist(&g)); 328 owl_timer_reset(owl_global_get_aim_buddyinfo_timer(&g)); 329 } 325 330 } 326 331 -
owl.h
re6449bc rde03334 385 385 typedef struct _owl_buddylist { 386 386 owl_list buddies; 387 owl_list idletimes; 387 388 } owl_buddylist; 388 389 … … 444 445 owl_timer aim_noop_timer; 445 446 owl_timer aim_ignorelogin_timer; 447 owl_timer aim_buddyinfo_timer; 446 448 int aim_loggedin; /* true if currently logged into AIM */ 447 449 char *aim_screenname; /* currently logged in AIM screen name */ -
util.c
re6449bc rde03334 278 278 279 279 return(argv); 280 } 281 282 /* caller must free the return */ 283 char *owl_util_seconds_to_timestr(int seconds) 284 { 285 int days, minutes, hours; 286 long run; 287 char *out; 288 289 run=seconds; 290 291 days=run/86400; 292 run-=days*86400; 293 hours=run/3600; 294 run-=hours*3600; 295 minutes=run/60; 296 run-=minutes*60; 297 298 if (days>0) { 299 out=owl_sprintf("%i d %2.2i:%2.2i:%2.2li", days, hours, minutes, run); 300 } else { 301 out=owl_sprintf(" %2.2i:%2.2i:%2.2li", hours, minutes, run); 302 } 303 return(out); 280 304 } 281 305
Note: See TracChangeset
for help on using the changeset viewer.