Mercurial > pidgin
view plugins/chkmail.c @ 6096:94e4cf59bacb
[gaim-migrate @ 6555]
(21:55:33) Robot101: LSchiere2: while you're round, fancy renaming a file? StdAfx.h in src/win32/ to stdafx.h.
(21:55:50) LSchiere2: Robot101: is there a reason?
(21:55:57) Robot101: LSchiere2: yeah, try and put a vitriolic comment about windows and/or herman and his build system into
the CVS message.
(21:56:14) ***LSchiere2 listens for the why
(21:56:33) Robot101: because it gets included as "stdafx.h"
(21:56:38) LSchiere2: that's a good reason
(21:56:53) SimGuy: windows filesystems and their not-caring-ness
(21:57:03) Robot101: so gcc on Linux doesn't find it. just because you're building on a retarded platform doesn't mean you
have to be all retarded about it.
(21:57:14) Robot101: (yeah, use that as the commit message)
(21:57:31) LSchiere2: how many places is it included? ie would it be easier to just change the include?
(21:58:00) Robot101: we want to discourage this camelcaps as much as possible, so let's just embrace the fact he included it
as lowercase.
(21:58:13) ***LSchiere2 detects evasion
(21:58:26) LSchiere2: you do realize do you not that cvs does NOT handle renaming a file well at all
(21:58:37) Robot101: detect someone who is on a windows laptop ssh'd to a machine which doesn't have a gaim tree on
(21:58:50) Robot101: the file isn't ours
(21:58:55) Robot101: it's just ripped from some other project
(21:58:58) zx64: mv File file; cvs remove File; cvs add file; cvs ci; done
(21:59:00) Robot101: we havn't changed it much.any
(21:59:04) RUBotzman left the room ("Bye all").
(21:59:11) LSchiere2: yes i'm aware of the steps involved zx64
(21:59:12) Robot101: *much/any
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Sat, 12 Jul 2003 02:00:38 +0000 |
parents | c081a81ee013 |
children | a21cf07cd8e1 |
line wrap: on
line source
/* This is some funky code. It is still being developed by Rob Flynn - rob@linuxpimps.com * I recommend not using this code right now. :) */ #define GAIM_PLUGINS #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <pthread.h> #include "gaim.h" char username[] = ""; char password[] = ""; char mailhost[] = ""; int mailport = 110; int state = 0; static void *handle = NULL; extern GtkWidget *buddies; int lastnum = 0; int orig = 0; int mytimer; void update_mail(); void check_mail(); int num_msgs() { struct in_addr *sin; char recv[1024]; char command[256]; int fd; int num = 0; int step = 0; int len; sin = (struct in_addr *)get_address(mailhost); fd = connect_address(sin->s_addr, mailport); while ((len = read(fd, recv, 1023))>0) { recv[len] = 0; if (!strncmp(recv, "-ERR", strlen("-ERR"))) { step = 4; break; } else if (!strncmp(recv, "+OK", strlen("+OK"))) { if (step == 3) { if (sscanf(recv, "+OK %d %d\n", &num, &step) != 2) break; g_snprintf(command, sizeof(command), "QUIT\n"); write(fd, command, strlen(command)); close(fd); printf("DEBUG: Num is %d\n", num); return num; } if (step == 0) { g_snprintf(command, sizeof(command), "USER %s\n", username); write(fd, command, strlen(command)); step = 1; } else if (step == 1) { g_snprintf(command, sizeof(command), "PASS %s\n", password); write(fd, command, strlen(command)); step = 2; } else if (step == 2) { g_snprintf(command, sizeof(command), "STAT\n"); write(fd, command, strlen(command)); step = 3; } } } close(fd); return 0; } void destroy_mail_list() { GList *list; GtkWidget *w; list = GTK_TREE(buddies)->children; while (list) { w = (GtkWidget *)list->data; if (!strcmp(GTK_LABEL(GTK_BIN(w)->child)->label, _("Mail Server"))) { gtk_tree_remove_items(GTK_TREE(buddies), list); list = GTK_TREE(buddies)->children; if (!list) break; } list = list->next; } } void setup_mail_list() { GList *list; GtkWidget *w; GtkWidget *item; GtkWidget *tree; gchar *buf; list = GTK_TREE(buddies)->children; while (list) { w = (GtkWidget *)list->data; if (!strcmp(GTK_LABEL(GTK_BIN(w)->child)->label, _("Mail Server"))) { gtk_tree_remove_items(GTK_TREE(buddies), list); list = GTK_TREE(buddies)->children; if (!list) break; } list = list->next; } item = gtk_tree_item_new_with_label(_("Mail Server")); tree = gtk_tree_new(); gtk_widget_show(item); gtk_widget_show(tree); gtk_tree_append(GTK_TREE(buddies), item); gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), tree); gtk_tree_item_expand(GTK_TREE_ITEM(item)); buf = g_malloc(BUF_LONG); g_snprintf(buf, BUF_LONG, _("%s (%d new/%d total)"), mailhost, lastnum - orig, lastnum); item = gtk_tree_item_new_with_label(buf); g_free(buf); gtk_tree_append(GTK_TREE(tree), item); gtk_widget_show(item); } void gaim_plugin_init(void *h) { handle = h; orig = num_msgs(); lastnum = orig; gaim_signal_connect(handle, event_blist_update, setup_mail_list, NULL); setup_mail_list(); mytimer = g_timeout_add(30000, check_mail, NULL); } void check_mail() { pthread_t mail_thread; pthread_attr_t attr; printf("Looping in: State = %d\n", state); if (state == 0) { state = 1; printf("Before\n"); pthread_attr_init(&attr); pthread_create(&mail_thread, &attr, (void *)&update_mail, NULL); printf("After\n"); } printf("Bouncing out, state = %d\n", state); } void update_mail () { int newnum; printf("um\n"); g_source_remove(mytimer); printf("nm1\n"); newnum = num_msgs(); printf("nm2\n"); if ( (newnum >= lastnum) && (newnum > 0)) { newnum = newnum - lastnum; } else { newnum = 0; } if (newnum < lastnum) { orig = lastnum; } lastnum = newnum; mytimer = g_timeout_add(30000, check_mail, NULL); printf("sml1\n"); setup_mail_list(); printf("sml2\n"); state = 0; } void gaim_plugin_remove() { g_source_remove(mytimer); while (state == 1) { } destroy_mail_list(); handle = NULL; } char *name() { return _("Check Mail"); } char *description() { return _("Check email every X seconds.\n"); }