+2004-10-19 [colin] 0.9.12cvs128.1
+
+ * src/addrbook.c
+ * src/addrcache.c
+ * src/addressbook.c
+ * src/codeconv.c
+ * src/compose.c
+ * src/customheader.c
+ * src/editaddress.c
+ * src/editgroup.c
+ * src/exporthtml.c
+ * src/folder.c
+ * src/folderview.c
+ * src/imap.c
+ * src/jpilot.c
+ * src/main.c
+ * src/matcher_parser_parse.y
+ * src/mbox.c
+ * src/pop.c
+ * src/prefs_account.c
+ * src/prefs_gtk.c
+ * src/prefs_msg_colors.c
+ * src/procheader.c
+ * src/procmime.c
+ * src/procmime.h
+ * src/procmsg.c
+ * src/summaryview.c
+ * src/textview.c
+ * src/common/base64.c
+ * src/common/partial_download.c
+ * src/common/socket.c
+ * src/common/sylpheed.c
+ * src/common/utils.c
+ * src/common/utils.h
+ * src/gtk/pluginwindow.c
+ * src/gtk/quicksearch.c
+ * src/plugins/clamav/clamav_plugin.c
+ * src/plugins/clamav/clamav_plugin.h
+ * src/plugins/clamav/clamav_plugin_gtk.c
+ * src/plugins/pgpmime/passphrase.c
+ * src/plugins/pgpmime/pgpmime.c
+ * src/plugins/pgpmime/plugin.c
+ * src/plugins/pgpmime/prefs_gpg.c
+ * src/plugins/pgpmime/prefs_gpg.h
+ * src/plugins/pgpmime/select-keys.c
+ * src/plugins/pgpmime/sgpgme.c
+ * src/plugins/spamassassin/libspamc.c
+ * src/plugins/spamassassin/spamassassin.c
+ * src/plugins/spamassassin/spamassassin.h
+ * src/plugins/spamassassin/spamassassin_gtk.c
+ * src/plugins/trayicon/trayicon.c
+ * src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c
+ Sync with HEAD
+
2004-10-14 [colin] 0.9.12cvs126.2
* src/codeconv.c
( cvs diff -u -r 1.53.2.6 -r 1.53.2.7 po/POTFILES.in; ) > 0.9.12cvs125.1.patchset
( cvs diff -u -r 1.382.2.50 -r 1.382.2.51 src/compose.c; ) > 0.9.12cvs126.1.patchset
( cvs diff -u -r 1.65.2.13 -r 1.65.2.15 src/codeconv.c; cvs diff -u -r 1.96.2.21 -r 1.96.2.22 src/textview.c; ) > 0.9.12cvs126.2.patchset
+( cvs diff -u -r 1.22.2.1 -r 1.22.2.2 src/addrbook.c; cvs diff -u -r 1.15.2.1 -r 1.15.2.2 src/addrcache.c; cvs diff -u -r 1.60.2.11 -r 1.60.2.12 src/addressbook.c; cvs diff -u -r 1.65.2.15 -r 1.65.2.16 src/codeconv.c; cvs diff -u -r 1.382.2.51 -r 1.382.2.52 src/compose.c; cvs diff -u -r 1.5.2.2 -r 1.5.2.3 src/customheader.c; cvs diff -u -r 1.14.2.2 -r 1.14.2.3 src/editaddress.c; cvs diff -u -r 1.11.2.2 -r 1.11.2.3 src/editgroup.c; cvs diff -u -r 1.5 -r 1.6 src/exporthtml.c; cvs diff -u -r 1.213.2.17 -r 1.213.2.18 src/folder.c; cvs diff -u -r 1.207.2.18 -r 1.207.2.19 src/folderview.c; cvs diff -u -r 1.179.2.8 -r 1.179.2.9 src/imap.c; cvs diff -u -r 1.18.2.2 -r 1.18.2.3 src/jpilot.c; cvs diff -u -r 1.115.2.20 -r 1.115.2.21 src/main.c; cvs diff -u -r 1.25.2.4 -r 1.25.2.5 src/matcher_parser_parse.y; cvs diff -u -r 1.28.2.1 -r 1.28.2.2 src/mbox.c; cvs diff -u -r 1.56.2.25 -r 1.56.2.26 src/pop.c; cvs diff -u -r 1.105.2.9 -r 1.105.2.10 src/prefs_account.c; cvs diff -u -r 1.10.2.6 -r 1.10.2.7 src/prefs_gtk.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/prefs_msg_colors.c; cvs diff -u -r 1.47.2.9 -r 1.47.2.10 src/procheader.c; cvs diff -u -r 1.49.2.10 -r 1.49.2.11 src/procmime.c; cvs diff -u -r 1.17.2.5 -r 1.17.2.6 src/procmime.h; cvs diff -u -r 1.150.2.10 -r 1.150.2.11 src/procmsg.c; cvs diff -u -r 1.395.2.35 -r 1.395.2.36 src/summaryview.c; cvs diff -u -r 1.96.2.22 -r 1.96.2.23 src/textview.c; cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/common/base64.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/common/partial_download.c; cvs diff -u -r 1.13.2.9 -r 1.13.2.10 src/common/socket.c; cvs diff -u -r 1.7.2.2 -r 1.7.2.3 src/common/sylpheed.c; cvs diff -u -r 1.36.2.8 -r 1.36.2.9 src/common/utils.c; cvs diff -u -r 1.20.2.7 -r 1.20.2.8 src/common/utils.h; cvs diff -u -r 1.5.2.5 -r 1.5.2.6 src/gtk/pluginwindow.c; cvs diff -u -r 1.1.2.11 -r 1.1.2.12 src/gtk/quicksearch.c; cvs diff -u -r 1.13.2.3 -r 1.13.2.4 src/plugins/clamav/clamav_plugin.c; cvs diff -u -r 1.3 -r 1.4 src/plugins/clamav/clamav_plugin.h; cvs diff -u -r 1.9.2.4 -r 1.9.2.5 src/plugins/clamav/clamav_plugin_gtk.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/passphrase.c; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/plugins/pgpmime/plugin.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/prefs_gpg.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/prefs_gpg.h; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/select-keys.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpmime/sgpgme.c; cvs diff -u -r 1.4.2.2 -r 1.4.2.3 src/plugins/spamassassin/libspamc.c; cvs diff -u -r 1.18.2.3 -r 1.18.2.4 src/plugins/spamassassin/spamassassin.c; cvs diff -u -r 1.4.2.1 -r 1.4.2.2 src/plugins/spamassassin/spamassassin.h; cvs diff -u -r 1.23.2.5 -r 1.23.2.6 src/plugins/spamassassin/spamassassin_gtk.c; cvs diff -u -r 1.14.2.11 -r 1.14.2.12 src/plugins/trayicon/trayicon.c; cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c; ) > 0.9.12cvs128.1.patchset
MICRO_VERSION=12
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=126
+EXTRA_VERSION=128
EXTRA_RELEASE=
-EXTRA_GTK2_VERSION=.2
+EXTRA_GTK2_VERSION=.1
if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}${EXTRA_RELEASE}${EXTRA_GTK2_VERSION}
strcpy(buf, adbookdir);
strcat(buf, entry->d_name);
stat(buf, &statbuf);
- if (S_IFREG & statbuf.st_mode) {
+ if (S_ISREG(statbuf.st_mode)) {
if (strncmp(
entry->d_name,
ADDRBOOK_PREFIX, lenpre) == 0)
struct stat filestat;
retVal = TRUE;
if( path ) {
- if( 0 == lstat( path, &filestat ) ) {
+ if( 0 == stat( path, &filestat ) ) {
if( filestat.st_mtime == cache->modifyTime ) retVal = FALSE;
}
}
gboolean retVal = FALSE;
struct stat filestat;
if( path ) {
- if( 0 == lstat( path, &filestat ) ) {
+ if( 0 == stat( path, &filestat ) ) {
cache->modifyTime = filestat.st_mtime;
retVal = TRUE;
}
static AddressDataSource *addressbook_find_datasource
(GtkCTreeNode *node );
-static AddressDataSource *addressbook_find_datasource_for_object
- ( AddrItemObject *ao );
static AddressBookFile *addressbook_get_book_file(void);
if( cell2 ) name2 = cell2->u.text;
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
/*
/* Order by name */
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
else {
/* Order groups before person */
}
}
-static AddressBookFile *get_rawDataSource(ItemFolder *item)
-{
- AdapterDSource *ads = NULL;
- AddressDataSource *ds = NULL;
- ads = ADAPTER_DSOURCE(item);
- if (ads == NULL ) return NULL;
- ds = ads->dataSource;
- if (ds == NULL ) return NULL;
-
- return ds->rawDataSource;
-}
-
static void addressbook_drag_received_cb(GtkWidget *widget,
GdkDragContext *drag_context,
gint x,
AddressObject *obj = NULL;
AdapterDSource *ads = NULL;
AddressDataSource *ds = NULL;
- AddrBookBase *adbase = NULL;
- AddressCache *cache = NULL;
-
if (gtk_clist_get_selection_info
(GTK_CLIST(widget), x - 24, y - 24, &row, &column) == 0) {
JISState state = JIS_ASCII;
while (*in != '\0') {
- if (isascii(*in)) {
+ if (IS_ASCII(*in)) {
K_OUT();
*out++ = *in++;
} else if (iseuckanji(*in)) {
K_OUT();
*out++ = SUBST_CHAR;
in++;
- if (*in != '\0' && !isascii(*in)) {
+ if (*in != '\0' && !IS_ASCII(*in)) {
*out++ = SUBST_CHAR;
in++;
}
} else {
K_OUT();
in++;
- if (*in != '\0' && !isascii(*in)) {
+ if (*in != '\0' && !IS_ASCII(*in)) {
*out++ = SUBST_CHAR;
in++;
}
*out++ = *in++ & 0x7f;
} else {
K_OUT();
- if (*in != '\0' && !isascii(*in)) {
+ if (*in != '\0' && !IS_ASCII(*in)) {
*out++ = SUBST_CHAR;
in++;
- if (*in != '\0' && !isascii(*in)) {
+ if (*in != '\0' && !IS_ASCII(*in)) {
*out++ = SUBST_CHAR;
in++;
}
guchar *out = outbuf;
while (*in != '\0') {
- if (isascii(*in)) {
+ if (IS_ASCII(*in)) {
*out++ = *in++;
} else if (issjiskanji1(*in)) {
if (issjiskanji2(*(in + 1))) {
} else {
*out++ = SUBST_CHAR;
in++;
- if (*in != '\0' && !isascii(*in)) {
+ if (*in != '\0' && !IS_ASCII(*in)) {
*out++ = SUBST_CHAR;
in++;
}
register guchar *p = str;
while (*p != '\0') {
- if (isascii(*p)) {
+ if (IS_ASCII(*p)) {
/* convert CR+LF -> LF */
if (*p == '\r' && *(p + 1) == '\n')
memmove(p, p + 1, strlen(p));
/* substitute unprintable code */
*p++ = SUBST_CHAR;
if (*p != '\0') {
- if (isascii(*p))
+ if (IS_ASCII(*p))
p++;
else
*p++ = SUBST_CHAR;
/* convert CR+LF -> LF */
if (*p == '\r' && *(p + 1) == '\n')
memmove(p, p + 1, strlen(p));
- else if (!isascii(*p)) *p = SUBST_CHAR;
+ else if (!IS_ASCII(*p)) *p = SUBST_CHAR;
p++;
}
}
if (guessed == C_US_ASCII)
return C_ISO_2022_JP;
p += 2;
- } else if (isascii(*p)) {
+ } else if (IS_ASCII(*p)) {
p++;
} else if (iseuckanji(*p) && iseuckanji(*(p + 1))) {
if (*p >= 0xfd && *p <= 0xfe)
dest_code = (char *)idest_code;
/* don't convert if current codeset is US-ASCII */
- if (!strcasecmp(dest_code, CS_US_ASCII))
+ if (!g_strcasecmp(dest_code, CS_US_ASCII))
return g_strdup(inbuf);
/* don't convert if src and dest codeset are identical */
- if (!strcasecmp(src_code, dest_code))
+ if (!g_strcasecmp(src_code, dest_code))
return g_strdup(inbuf);
/* FIXME: unchecked inbuf? Can't see at this level. */
/* "ja_JP.EUC" matches with "ja_JP.eucJP", "ja_JP.EUC" and
"ja_JP". "ja_JP" matches with "ja_JP.xxxx" and "ja" */
- if (!strncasecmp(cur_locale, locale_table[i].locale,
+ if (!g_strncasecmp(cur_locale, locale_table[i].locale,
strlen(locale_table[i].locale))) {
cur_charset = locale_table[i].charset;
return cur_charset;
} else if ((p = strchr(locale_table[i].locale, '_')) &&
!strchr(p + 1, '.')) {
if (strlen(cur_locale) == 2 &&
- !strncasecmp(cur_locale, locale_table[i].locale, 2)) {
+ !g_strncasecmp(cur_locale, locale_table[i].locale, 2)) {
cur_charset = locale_table[i].charset;
return cur_charset;
}
for (i = 0; i < sizeof(locale_table) / sizeof(locale_table[0]); i++) {
const gchar *p;
- if (!strncasecmp(cur_locale, locale_table[i].locale,
+ if (!g_strncasecmp(cur_locale, locale_table[i].locale,
strlen(locale_table[i].locale))) {
out_charset = locale_table[i].out_charset;
break;
} else if ((p = strchr(locale_table[i].locale, '_')) &&
!strchr(p + 1, '.')) {
if (strlen(cur_locale) == 2 &&
- !strncasecmp(cur_locale, locale_table[i].locale, 2)) {
+ !g_strncasecmp(cur_locale, locale_table[i].locale, 2)) {
out_charset = locale_table[i].out_charset;
break;
}
#include <string.h>
#include "base64.h"
+#include "utils.h"
static const gchar base64char[64] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
};
-#define BASE64VAL(c) (isascii((guchar)c) ? base64val[(gint)(c)] : -1)
+#define BASE64VAL(c) (IS_ASCII(c) ? base64val[(gint) (c)] : -1)
void base64_encode(gchar *out, const guchar *in, gint inlen)
{
g_free(folder_id);
}
else if (download == POP3_PARTIAL_DLOAD_UNKN)
- stat = strdup("1");
+ stat = g_strdup("1");
else if (download == POP3_PARTIAL_DLOAD_DELE)
- stat = strdup("0");
+ stat = g_strdup("0");
fprintf(fpnew, "%s\t%ld\t%s\n",
uidl, recv_time, stat);
void partial_delete_old(const gchar *file)
{
- gchar *id = strdup(file);
+ gchar *id = g_strdup(file);
gchar *snum = strrchr(file, ':');
int num = 0;
FolderItem *item = NULL;
}
}
if (!strcmp(muidl, uidl)) {
- result = strdup(tmp);
+ result = g_strdup(tmp);
break;
}
}
sockinfo->port = port;
sockinfo->state = CONN_ESTABLISHED;
- usleep(100000);
-
return sockinfo;
}
}
}
- srandom((gint)time(NULL));
+ srand((gint) time(NULL));
#if USE_OPENSSL
ssl_init();
#include <dirent.h>
#include <time.h>
#include <regex.h>
+#include <sys/utsname.h>
#include "intl.h"
#include "utils.h"
gint str_case_equal(gconstpointer v, gconstpointer v2)
{
- return strcasecmp((const gchar *)v, (const gchar *)v2) == 0;
+ return g_strcasecmp((const gchar *)v, (const gchar *)v2) == 0;
}
guint str_case_hash(gconstpointer key)
return NULL;
while (haystack_len >= needle_len) {
- if (!strncasecmp(haystack, needle, needle_len))
+ if (!g_strncasecmp(haystack, needle, needle_len))
return (gchar *)haystack;
else {
haystack++;
trim_subject_for_sort(str1);
trim_subject_for_sort(str2);
- return strcasecmp(str1, str2);
+ return g_strcasecmp(str1, str2);
}
void trim_subject_for_compare(gchar *str)
static gchar *domain_name = NULL;
if (!domain_name) {
- gchar buf[128] = "";
struct hostent *hp;
+ struct utsname uts;
- if (gethostname(buf, sizeof(buf)) < 0) {
+ if (uname(&uts) < 0) {
perror("gethostname");
domain_name = "unknown";
} else {
- buf[sizeof(buf) - 1] = '\0';
- if ((hp = my_gethostbyname(buf)) == NULL) {
+ if ((hp = my_gethostbyname(uts.nodename)) == NULL) {
perror("gethostbyname");
- domain_name = g_strdup(buf);
+ domain_name = g_strdup(uts.nodename);
} else {
domain_name = g_strdup(hp->h_name);
}
unlink(dest);
return -1;
}
+
+ return 0;
}
/* convert line endings into CRLF. If the last line doesn't end with
* doesn't do any harm.
*/
for (i = 0; i < sizeof(buf_uniq) - 1; i++)
- buf_uniq[i] = tbl[(random() ^ pid) % (sizeof(tbl) - 1)];
+ buf_uniq[i] = tbl[(rand() ^ pid) % (sizeof(tbl) - 1)];
buf_uniq[i] = '\0';
get_rfc822_date(buf_date, sizeof(buf_date));
remoteoffset = 0;
} else if (strlen(zone3) == 3) {
for (p = ustzstr; *p != '\0'; p += 3) {
- if (!strncasecmp(p, zone3, 3)) {
+ if (!g_strncasecmp(p, zone3, 3)) {
iustz = ((gint)(p - ustzstr) / 3 + 1) / 2 - 8;
remoteoffset = iustz * 3600;
break;
const char *str1 = gptr1;
const char *str2 = gptr2;
- return !strcasecmp(str1, str2);
+ return !g_strcasecmp(str1, str2);
}
gint g_int_compare(gconstpointer a, gconstpointer b)
lt->tm_year + 1900, lt->tm_mon + 1,
lt->tm_mday, lt->tm_hour,
lt->tm_min, lt->tm_sec,
- (guint)random(), addr);
+ (guint) rand(), addr);
g_free(addr);
return buf;
perror(func); \
}
+#define IS_ASCII(c) (((guchar) c) <= 0177 ? 1 : 0)
+
#ifdef __cplusplus
extern "C" {
#endif
if (content_type) {
ainfo->content_type = g_strdup(content_type);
- if (!strcasecmp(content_type, "message/rfc822")) {
+ if (!g_strcasecmp(content_type, "message/rfc822")) {
MsgInfo *msginfo;
MsgFlags flags = {0, 0};
const gchar *name;
debug_print("First text part found\n");
} else if (compose->mode == COMPOSE_REEDIT &&
child->type == MIMETYPE_APPLICATION &&
- !strcasecmp(child->subtype, "pgp-encrypted")) {
+ !g_strcasecmp(child->subtype, "pgp-encrypted")) {
AlertValue val;
val = alertpanel(_("Encrypted message"),
_("Cannot re-edit an encrypted message. \n"
mimemsg->type = MIMETYPE_MESSAGE;
mimemsg->subtype = g_strdup("rfc822");
mimemsg->content = MIMECONTENT_MEM;
- mimemsg->data = compose_get_header(compose);
+ mimemsg->data.mem = compose_get_header(compose);
/* Create text part MimeInfo */
/* get all composed text */
const gchar *src_codeset;
out_codeset = conv_get_outgoing_charset_str();
- if (!strcasecmp(out_codeset, CS_US_ASCII))
+ if (!g_strcasecmp(out_codeset, CS_US_ASCII))
out_codeset = CS_ISO_8859_1;
if (prefs_common.encoding_method == CTE_BASE64)
src_codeset = CS_UTF_8;
/* if current encoding is US-ASCII, set it the same as
outgoing one to prevent code conversion failure */
- if (!strcasecmp(src_codeset, CS_US_ASCII))
+ if (!g_strcasecmp(src_codeset, CS_US_ASCII))
src_codeset = out_codeset;
debug_print("src encoding = %s, out encoding = %s, transfer encoding = %s\n",
mimetext = procmime_mimeinfo_new();
mimetext->content = MIMECONTENT_MEM;
- mimetext->data = buf;
+ mimetext->data.mem = buf;
mimetext->type = MIMETYPE_TEXT;
mimetext->subtype = g_strdup("plain");
g_hash_table_insert(mimetext->typeparameters, g_strdup("charset"),
row++) {
mimepart = procmime_mimeinfo_new();
mimepart->content = MIMECONTENT_FILE;
- mimepart->filename = g_strdup(ainfo->file);
+ mimepart->data.filename = g_strdup(ainfo->file);
mimepart->offset = 0;
stat(ainfo->file, &statbuf);
lt->tm_year + 1900, lt->tm_mon + 1,
lt->tm_mday, lt->tm_hour,
lt->tm_min, lt->tm_sec,
- (guint)random(), addr);
+ (guint) rand(), addr);
debug_print("generated Message-ID: %s\n", buf);
for (cur = header_list; cur != NULL; cur = cur->next) {
chdr = (CustomHeader *)cur->data;
- if (!strcasecmp(chdr->name, header))
+ if (!g_strcasecmp(chdr->name, header))
return chdr;
}
{
g_return_val_if_fail(header != NULL, FALSE);
- if (strcasecmp(header, "Date") != 0 &&
- strcasecmp(header, "From") != 0 &&
- strcasecmp(header, "To") != 0 &&
- /* strcasecmp(header, "Sender") != 0 && */
- strcasecmp(header, "Message-ID") != 0 &&
- strcasecmp(header, "In-Reply-To") != 0 &&
- strcasecmp(header, "References") != 0 &&
- strcasecmp(header, "Mime-Version") != 0 &&
- strcasecmp(header, "Content-Type") != 0 &&
- strcasecmp(header, "Content-Transfer-Encoding")
+ if (g_strcasecmp(header, "Date") != 0 &&
+ g_strcasecmp(header, "From") != 0 &&
+ g_strcasecmp(header, "To") != 0 &&
+ /* g_strcasecmp(header, "Sender") != 0 && */
+ g_strcasecmp(header, "Message-ID") != 0 &&
+ g_strcasecmp(header, "In-Reply-To") != 0 &&
+ g_strcasecmp(header, "References") != 0 &&
+ g_strcasecmp(header, "Mime-Version") != 0 &&
+ g_strcasecmp(header, "Content-Type") != 0 &&
+ g_strcasecmp(header, "Content-Transfer-Encoding")
!= 0)
return TRUE;
if( cell2 ) name2 = cell2->u.text;
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
/*
if( cell2 ) name2 = cell2->u.text;
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
static void addressbook_edit_group_create( gboolean *cancelled ) {
if( item2 ) name2 = ADDRITEM_NAME( item2 );
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
/*
if( email2 ) name2 = email2->address;
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
/*
if( attr2 ) name2 = attr2->name;
if( ! name1 ) return ( name2 != NULL );
if( ! name2 ) return -1;
- return strcasecmp( name1, name2 );
+ return g_strcasecmp( name1, name2 );
}
/*
if (!attr || !attr->name || !attr->value) continue;
if (!strcmp(attr->name, "type")) {
- if (!strcasecmp(attr->value, "normal"))
+ if (!g_strcasecmp(attr->value, "normal"))
item->stype = F_NORMAL;
- else if (!strcasecmp(attr->value, "inbox"))
+ else if (!g_strcasecmp(attr->value, "inbox"))
item->stype = F_INBOX;
- else if (!strcasecmp(attr->value, "outbox"))
+ else if (!g_strcasecmp(attr->value, "outbox"))
item->stype = F_OUTBOX;
- else if (!strcasecmp(attr->value, "draft"))
+ else if (!g_strcasecmp(attr->value, "draft"))
item->stype = F_DRAFT;
- else if (!strcasecmp(attr->value, "queue"))
+ else if (!g_strcasecmp(attr->value, "queue"))
item->stype = F_QUEUE;
- else if (!strcasecmp(attr->value, "trash"))
+ else if (!g_strcasecmp(attr->value, "trash"))
item->stype = F_TRASH;
} else if (!strcmp(attr->name, "name")) {
if (item->name != NULL)
#include "statusbar.h"
#include "hooks.h"
#include "folderutils.h"
+#include "common/partial_download.h"
typedef enum
{
#include "filesel.h"
#include "alertpanel.h"
+#include "../inc.h"
typedef struct _PluginWindow
{
# include "config.h"
#endif
+#include <ctype.h>
+
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
base = g_basename(new_item->path);
- if (!folder->outbox && !strcasecmp(base, "Sent")) {
+ if (!folder->outbox && !g_strcasecmp(base, "Sent")) {
new_item->stype = F_OUTBOX;
folder->outbox = new_item;
- } else if (!folder->draft && !strcasecmp(base, "Drafts")) {
+ } else if (!folder->draft && !g_strcasecmp(base, "Drafts")) {
new_item->stype = F_DRAFT;
folder->draft = new_item;
- } else if (!folder->queue && !strcasecmp(base, "Queue")) {
+ } else if (!folder->queue && !g_strcasecmp(base, "Queue")) {
new_item->stype = F_QUEUE;
folder->queue = new_item;
- } else if (!folder->trash && !strcasecmp(base, "Trash")) {
+ } else if (!folder->trash && !g_strcasecmp(base, "Trash")) {
new_item->stype = F_TRASH;
folder->trash = new_item;
}
while ((ok = imap_gen_recv(session, &buf))
== IMAP_SUCCESS) {
- // make sure data is long enough for any substring of buf
+ /* make sure data is long enough for any substring of buf */
data = alloca(strlen(buf) + 1);
- // untagged line read
+ /* untagged line read */
if (buf[0] == '*' && buf[1] == ' ') {
gint num;
if (argbuf)
session->folder_content_changed = TRUE;
}
}
- // tagged line with correct tag and OK response found
+ /* tagged line with correct tag and OK response found */
} else if ((sscanf(buf, "%d %s", &cmd_num, data) >= 2) &&
(cmd_num == session->cmd_count) &&
!strcmp(data, "OK")) {
if (argbuf)
g_ptr_array_add(argbuf, g_strdup(buf));
break;
- // everything else
+ /* everything else */
} else {
ok = IMAP_ERROR;
break;
session->cmd_count++;
buf = g_strdup_printf("%d %s\r\n", session->cmd_count, tmp);
- if (!strncasecmp(tmp, "LOGIN ", 6) && (p = strchr(tmp + 6, ' '))) {
+ if (!g_strncasecmp(tmp, "LOGIN ", 6) && (p = strchr(tmp + 6, ' '))) {
*p = '\0';
log_print("IMAP4> %d %s ********\n", session->cmd_count, tmp);
} else
Xalloca(norm_utf7, norm_utf7_len + 1, return g_strdup(from));
norm_utf7_p = norm_utf7;
-#define IS_PRINT(ch) (isprint(ch) && isascii(ch))
+#define IS_PRINT(ch) (isprint(ch) && IS_ASCII(ch))
while (from_len > 0) {
if (*from_tmp == '+') {
pilotFile->pc3ModifyTime = 0;
pcFile = jpilot_get_pc3_file( pilotFile );
if( pcFile == NULL ) return retVal;
- if( 0 == lstat( pcFile, &filestat ) ) {
+ if( 0 == stat( pcFile, &filestat ) ) {
pilotFile->havePC3 = TRUE;
pilotFile->pc3ModifyTime = filestat.st_mtime;
retVal = TRUE;
pcFile = jpilot_get_pc3_file( pilotFile );
if( pcFile == NULL ) return FALSE;
- if( 0 == lstat( pcFile, &filestat ) ) {
+ if( 0 == stat( pcFile, &filestat ) ) {
if( filestat.st_mtime == pilotFile->pc3ModifyTime ) retVal = FALSE;
}
g_free( pcFile );
#include "defs.h"
+#include <features.h>
+
#include <glib.h>
#include <gtk/gtkmain.h>
#include <gtk/gtkrc.h>
static GSList *matchers_list = NULL;
static MatcherList *cond;
-static gint score = 0;
static GSList *action_list = NULL;
static FilteringAction *action = NULL;
void empty_mbox(const gchar *mbox)
{
- if (truncate(mbox, 0) < 0) {
- FILE *fp;
-
- FILE_OP_ERROR(mbox, "truncate");
- if ((fp = fopen(mbox, "wb")) == NULL) {
- FILE_OP_ERROR(mbox, "fopen");
- g_warning("can't truncate mailbox to zero.\n");
- return;
- }
- fclose(fp);
+ FILE *fp;
+
+ if ((fp = fopen(mbox, "wb")) == NULL) {
+ FILE_OP_ERROR(mbox, "fopen");
+ g_warning("can't truncate mailbox to zero.\n");
+ return;
}
+ fclose(fp);
}
/* read all messages in SRC, and store them into one MBOX file. */
#include "clamav_plugin.h"
static guint hook_id;
+static MessageCallback message_callback;
static ClamAvConfig config;
if (!mimeinfo) return FALSE;
debug_print("Scanning message %d for viruses\n", msginfo->msgnum);
- statusbar_print_all(_("ClamAV: scanning message..."));
+ if (message_callback != NULL)
+ message_callback(_("ClamAV: scanning message..."));
params.is_infected = FALSE;
params.root = NULL;
prefs_file_close(pfile);
}
+void clamav_set_message_callback(MessageCallback callback)
+{
+ message_callback = callback;
+}
+
gint plugin_init(gchar **error)
{
if ((sylpheed_get_version() > VERSION_NUMERIC)) {
typedef struct _ClamAvConfig ClamAvConfig;
+typedef void (*MessageCallback) (gchar *);
+
struct _ClamAvConfig
{
gboolean clamav_enable;
gchar *clamav_save_folder;
};
-ClamAvConfig *clamav_get_config (void);
-void clamav_save_config (void);
+ClamAvConfig *clamav_get_config (void);
+void clamav_save_config (void);
+void clamav_set_message_callback (MessageCallback callback);
#endif
#include "prefs_gtk.h"
#include "foldersel.h"
#include "clamav_plugin.h"
+#include "statusbar.h"
struct ClamAvPage
{
static struct ClamAvPage clamav_page;
+static void gtk_message_callback(gchar *message)
+{
+ statusbar_print_all(message);
+}
+
gint plugin_init(gchar **error)
{
static gchar *path[3];
clamav_page.page.weight = 35.0;
prefs_gtk_register_page((PrefsPage *) &clamav_page);
+ clamav_set_message_callback(gtk_message_callback);
debug_print("ClamAV GTK plugin loaded\n");
return 0;
void plugin_done(void)
{
+ clamav_set_message_callback(NULL);
prefs_gtk_unregister_page((PrefsPage *) &clamav_page);
debug_print("ClamAV GTK plugin unloaded\n");
#include "utils.h"
#include "prefs_gpg.h"
-extern struct GPGConfig prefs_gpg;
-
static int grab_all = 0;
static gboolean pass_ack;
/* FIXME: cleanup by looking at *r_hd */
return NULL;
}
- if (prefs_gpg.store_passphrase && last_pass != NULL &&
+ if (prefs_gpg_get_config()->store_passphrase && last_pass != NULL &&
strncmp(desc, "TRY_AGAIN", 9) != 0)
return g_strdup(last_pass);
- gpgmegtk_set_passphrase_grab (prefs_gpg.passphrase_grab);
+ gpgmegtk_set_passphrase_grab (prefs_gpg_get_config()->passphrase_grab);
debug_print ("%% requesting passphrase for `%s': ", desc);
pass = passphrase_mbox (desc);
gpgmegtk_free_passphrase();
gpgme_cancel (ctx);
}
else {
- if (prefs_gpg.store_passphrase) {
+ if (prefs_gpg_get_config()->store_passphrase) {
last_pass = g_strdup(pass);
if (mlock(last_pass, strlen(last_pass)) == -1)
debug_print("%% locking passphrase failed");
- if (prefs_gpg.store_passphrase_timeout > 0) {
- gtk_timeout_add(prefs_gpg.store_passphrase_timeout*60*1000,
+ if (prefs_gpg_get_config()->store_passphrase_timeout > 0) {
+ gtk_timeout_add(prefs_gpg_get_config()->store_passphrase_timeout*60*1000,
free_passphrase, NULL);
}
}
#include "prefs_gpg.h"
#include "passphrase.h"
-extern struct GPGConfig prefs_gpg;
-
typedef struct _PrivacyDataPGP PrivacyDataPGP;
struct _PrivacyDataPGP
debug_print("Checking PGP/MIME signature\n");
parent = procmime_mimeinfo_parent(mimeinfo);
- fp = fopen(parent->filename, "rb");
+ fp = fopen(parent->data.filename, "rb");
g_return_val_if_fail(fp != NULL, SIGNATURE_INVALID);
boundary = g_hash_table_lookup(parent->typeparameters, "boundary");
g_return_val_if_fail(data != NULL, SIGNATURE_INVALID);
if (data->sigstatus == GPGME_SIG_STAT_NONE &&
- prefs_gpg.auto_check_signatures)
+ prefs_gpg_get_config()->auto_check_signatures)
pgpmime_check_signature(mimeinfo);
return sgpgme_sigstat_gpgme_to_privacy(data->ctx, data->sigstatus);
g_return_val_if_fail(data != NULL, g_strdup("Error"));
if (data->sigstatus == GPGME_SIG_STAT_NONE &&
- prefs_gpg.auto_check_signatures)
+ prefs_gpg_get_config()->auto_check_signatures)
pgpmime_check_signature(mimeinfo);
return sgpgme_sigstat_info_short(data->ctx, data->sigstatus);
g_return_val_if_fail(data != NULL, g_strdup("Error"));
if (data->sigstatus == GPGME_SIG_STAT_NONE &&
- prefs_gpg.auto_check_signatures)
+ prefs_gpg_get_config()->auto_check_signatures)
pgpmime_check_signature(mimeinfo);
return sgpgme_sigstat_info_full(data->ctx, data->sigstatus);
newinfo->type = MIMETYPE_APPLICATION;
newinfo->subtype = g_strdup("pgp-signature");
newinfo->content = MIMECONTENT_MEM;
- newinfo->data = g_memdup(sigcontent, len + 1);
- newinfo->data[len] = '\0';
+ newinfo->data.mem = g_memdup(sigcontent, len + 1);
+ newinfo->data.mem[len] = '\0';
g_node_append(sigmultipart->node, newinfo->node);
g_free(sigcontent);
newinfo->type = MIMETYPE_APPLICATION;
newinfo->subtype = g_strdup("pgp-encrypted");
newinfo->content = MIMECONTENT_MEM;
- newinfo->data = g_strdup("Version: 1\n");
+ newinfo->data.mem = g_strdup("Version: 1\n");
g_node_append(encmultipart->node, newinfo->node);
newinfo = procmime_mimeinfo_new();
newinfo->type = MIMETYPE_APPLICATION;
newinfo->subtype = g_strdup("octet-stream");
newinfo->content = MIMECONTENT_MEM;
- newinfo->data = g_memdup(enccontent, len + 1);
- newinfo->data[len] = '\0';
+ newinfo->data.mem = g_memdup(enccontent, len + 1);
+ newinfo->data.mem[len] = '\0';
g_node_append(encmultipart->node, newinfo->node);
g_free(enccontent);
#include "intl.h"
#include "version.h"
+#include "common/sylpheed.h"
#include "sgpgme.h"
#include "pgpmime.h"
#include "prefs_gpg.h"
{"store_passphrase_timeout", "0",
&prefs_gpg.store_passphrase_timeout, P_INT,
NULL, NULL, NULL},
-#ifndef __MINGW32__
{"passphrase_grab", "FALSE", &prefs_gpg.passphrase_grab, P_BOOL,
NULL, NULL, NULL},
-#endif /* __MINGW32__ */
{"gpg_warning", "TRUE", &prefs_gpg.gpg_warning, P_BOOL,
NULL, NULL, NULL},
{NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
};
-static void prefs_privacy_create(void)
+struct GPGPage
{
- GtkWidget *vbox1;
- GtkWidget *vbox2;
- GtkWidget *vbox3;
- GtkWidget *hbox1;
- GtkWidget *hbox_spc;
- GtkWidget *label;
+ PrefsPage page;
+
GtkWidget *checkbtn_auto_check_signatures;
+ GtkWidget *checkbtn_store_passphrase;
+ GtkWidget *spinbtn_store_passphrase;
+ GtkWidget *checkbtn_passphrase_grab;
+ GtkWidget *checkbtn_gpg_warning;
+};
+
+static void prefs_gpg_create_widget_func(PrefsPage *_page,
+ GtkWindow *window,
+ gpointer data)
+{
+ struct GPGPage *page = (struct GPGPage *) _page;
+ struct GPGConfig *config;
+
+ /*
+ * BEGIN GLADE CODE
+ * DO NOT EDIT
+ */
+ GtkWidget *table;
+ GtkWidget *checkbtn_passphrase_grab;
GtkWidget *checkbtn_store_passphrase;
+ GtkWidget *checkbtn_auto_check_signatures;
+ GtkWidget *checkbtn_gpg_warning;
+ GtkWidget *label7;
+ GtkWidget *label6;
+ GtkWidget *label9;
+ GtkWidget *label10;
+ GtkWidget *hbox1;
+ GtkWidget *label11;
GtkObject *spinbtn_store_passphrase_adj;
GtkWidget *spinbtn_store_passphrase;
- GtkTooltips *store_tooltip;
- GtkWidget *checkbtn_passphrase_grab;
- GtkWidget *checkbtn_gpg_warning;
-
- vbox1 = gtk_vbox_new (FALSE, VSPACING);
- gtk_widget_show (vbox1);
- gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
-
- vbox2 = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox2);
- gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
-
- PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
- _("Automatically check signatures"));
-
- PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
- _("Store passphrase in memory temporarily"));
-
- vbox3 = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox3);
- gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
-
- hbox1 = gtk_hbox_new (FALSE, 8);
- gtk_widget_show (hbox1);
- gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
-
- hbox_spc = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox_spc);
- gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
- gtk_widget_set_size_request (hbox_spc, 12, -1);
-
- label = gtk_label_new (_("Expire after"));
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
-
- store_tooltip = gtk_tooltips_new();
-
- spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
- spinbtn_store_passphrase = gtk_spin_button_new
- (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
- gtk_widget_show (spinbtn_store_passphrase);
- gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
- _("Setting to '0' will store the passphrase"
- " for the whole session"),
+ GtkWidget *label12;
+ GtkTooltips *tooltips;
+
+ tooltips = gtk_tooltips_new();
+
+ table = gtk_table_new(5, 2, FALSE);
+ gtk_widget_show(table);
+ gtk_container_set_border_width(GTK_CONTAINER(table), 8);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 4);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 8);
+
+ checkbtn_passphrase_grab = gtk_check_button_new_with_label("");
+ gtk_widget_show(checkbtn_passphrase_grab);
+ gtk_table_attach(GTK_TABLE(table), checkbtn_passphrase_grab, 0, 1,
+ 3, 4, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+
+ checkbtn_store_passphrase = gtk_check_button_new_with_label("");
+ gtk_widget_show(checkbtn_store_passphrase);
+ gtk_table_attach(GTK_TABLE(table), checkbtn_store_passphrase, 0, 1,
+ 1, 2, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+
+ checkbtn_auto_check_signatures =
+ gtk_check_button_new_with_label("");
+ gtk_widget_show(checkbtn_auto_check_signatures);
+ gtk_table_attach(GTK_TABLE(table), checkbtn_auto_check_signatures,
+ 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+
+ checkbtn_gpg_warning = gtk_check_button_new_with_label("");
+ gtk_widget_show(checkbtn_gpg_warning);
+ gtk_table_attach(GTK_TABLE(table), checkbtn_gpg_warning, 0, 1, 4,
+ 5, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+
+ label7 = gtk_label_new(_("Store passphrase in memory"));
+ gtk_widget_show(label7);
+ gtk_table_attach(GTK_TABLE(table), label7, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+ gtk_misc_set_alignment(GTK_MISC(label7), 0, 0.5);
+
+ label6 = gtk_label_new(_("Automatically check signatures"));
+ gtk_widget_show(label6);
+ gtk_table_attach(GTK_TABLE(table), label6, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+ gtk_misc_set_alignment(GTK_MISC(label6), 0, 0.5);
+
+ label9 =
+ gtk_label_new(_("Grab input while entering a passphrase"));
+ gtk_widget_show(label9);
+ gtk_table_attach(GTK_TABLE(table), label9, 1, 2, 3, 4,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+ gtk_misc_set_alignment(GTK_MISC(label9), 0, 0.5);
+
+ label10 =
+ gtk_label_new(_
+ ("Display warning on startup if GnuPG doesn't work"));
+ gtk_widget_show(label10);
+ gtk_table_attach(GTK_TABLE(table), label10, 1, 2, 4, 5,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+ gtk_misc_set_alignment(GTK_MISC(label10), 0, 0.5);
+
+ hbox1 = gtk_hbox_new(FALSE, 8);
+ gtk_widget_show(hbox1);
+ gtk_table_attach(GTK_TABLE(table), hbox1, 1, 2, 2, 3,
+ (GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_SHRINK), 0, 0);
+
+ label11 = gtk_label_new(_("Expire after"));
+ gtk_widget_show(label11);
+ gtk_box_pack_start(GTK_BOX(hbox1), label11, FALSE, FALSE, 0);
+
+ spinbtn_store_passphrase_adj =
+ gtk_adjustment_new(1, 0, 1440, 1, 10, 10);
+ spinbtn_store_passphrase =
+ gtk_spin_button_new(GTK_ADJUSTMENT
+ (spinbtn_store_passphrase_adj), 1, 0);
+ gtk_widget_show(spinbtn_store_passphrase);
+ gtk_box_pack_start(GTK_BOX(hbox1), spinbtn_store_passphrase, FALSE,
+ FALSE, 0);
+ gtk_widget_set_usize(spinbtn_store_passphrase, 64, -2);
+ gtk_tooltips_set_tip(tooltips, spinbtn_store_passphrase,
+ _
+ ("Setting to '0' will store the passphrase for the whole session"),
NULL);
- gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
- gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
- TRUE);
- gtk_widget_set_size_request (spinbtn_store_passphrase, 64, -1);
-
- label = gtk_label_new (_("minute(s) "));
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
-
- hbox1 = gtk_hbox_new (FALSE, 8);
- gtk_widget_show (hbox1);
- gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
-
- hbox_spc = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox_spc);
- gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
- gtk_widget_set_size_request (hbox_spc, 12, -1);
-
- SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
-
-#ifndef __MINGW32__
- PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
- _("Grab input while entering a passphrase"));
-#endif
-
- PACK_CHECK_BUTTON
- (vbox2, checkbtn_gpg_warning,
- _("Display warning on startup if GnuPG doesn't work"));
+ gtk_spin_button_set_numeric(GTK_SPIN_BUTTON
+ (spinbtn_store_passphrase), TRUE);
+
+ label12 = gtk_label_new(_("minute(s)"));
+ gtk_widget_show(label12);
+ gtk_box_pack_start(GTK_BOX(hbox1), label12, TRUE, TRUE, 0);
+ gtk_misc_set_alignment(GTK_MISC(label12), 0.0, 0.5);
+ /*
+ * END GLADE CODE
+ */
+
+ config = prefs_gpg_get_config();
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_auto_check_signatures), config->auto_check_signatures);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_store_passphrase), config->store_passphrase);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_store_passphrase), (float) config->store_passphrase_timeout);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_passphrase_grab), config->passphrase_grab);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_gpg_warning), config->gpg_warning);
+
+ page->checkbtn_auto_check_signatures = checkbtn_auto_check_signatures;
+ page->checkbtn_store_passphrase = checkbtn_store_passphrase;
+ page->spinbtn_store_passphrase = spinbtn_store_passphrase;
+ page->checkbtn_passphrase_grab = checkbtn_passphrase_grab;
+ page->checkbtn_gpg_warning = checkbtn_gpg_warning;
+
+ page->page.widget = table;
+}
- hbox1 = gtk_hbox_new (FALSE, 8);
- gtk_widget_show (hbox1);
- gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+static void prefs_gpg_destroy_widget_func(PrefsPage *_page)
+{
+}
-/*
- privacy.checkbtn_auto_check_signatures
- = checkbtn_auto_check_signatures;
- privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
- privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
- privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
- privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
- privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
-*/
+static void prefs_gpg_save_func(PrefsPage *_page)
+{
+ struct GPGPage *page = (struct GPGPage *) _page;
+ GPGConfig *config = prefs_gpg_get_config();
+
+ config->auto_check_signatures =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_auto_check_signatures));
+ config->store_passphrase =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_store_passphrase));
+ config->store_passphrase_timeout =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->spinbtn_store_passphrase));
+ config->passphrase_grab =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_passphrase_grab));
+ config->gpg_warning =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_gpg_warning));
+
+ prefs_gpg_save_config();
}
GPGConfig *prefs_gpg_get_config(void)
PrefFile *pfile;
gchar *rcpath;
- debug_print("Saving GPGME config\n");
+ debug_print("Saving GPG config\n");
rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
pfile = prefs_write_open(rcpath);
g_free(rcpath);
- if (!pfile || (prefs_set_block_label(pfile, "GPGME") < 0))
+ if (!pfile || (prefs_set_block_label(pfile, "GPG") < 0))
return;
if (prefs_write_param(param, pfile->fp) < 0) {
- g_warning("failed to write GPGME configuration to file\n");
+ g_warning("failed to write GPG configuration to file\n");
prefs_file_close_revert(pfile);
return;
}
prefs_file_close(pfile);
}
+static struct GPGPage gpg_page;
+
void prefs_gpg_init()
{
+ static gchar *path[3];
+
prefs_set_default(param);
- prefs_read_config(param, "GPGME", COMMON_RC);
+ prefs_read_config(param, "GPG", COMMON_RC);
+
+ path[0] = _("Privacy");
+ path[1] = _("GPG");
+ path[2] = NULL;
+
+ gpg_page.page.path = path;
+ gpg_page.page.create_widget = prefs_gpg_create_widget_func;
+ gpg_page.page.destroy_widget = prefs_gpg_destroy_widget_func;
+ gpg_page.page.save_page = prefs_gpg_save_func;
+ gpg_page.page.weight = 30.0;
+
+ prefs_gtk_register_page((PrefsPage *) &gpg_page);
}
void prefs_gpg_done()
{
+ prefs_gtk_unregister_page((PrefsPage *) &gpg_page);
}
struct GPGConfig
{
gboolean auto_check_signatures;
- gboolean gpg_signature_popup;
gboolean store_passphrase;
gint store_passphrase_timeout;
gboolean passphrase_grab;
gboolean gpg_warning;
};
-void prefs_gpg_init();
-void prefs_gpg_done();
+void prefs_gpg_init(void);
+void prefs_gpg_done(void);
+void prefs_gpg_save_config(void);
+struct GPGConfig *prefs_gpg_get_config();
return !!sb;
if (!sb)
return -1;
- return strcasecmp(sa, sb);
+ return g_strcasecmp(sa, sb);
}
static gint
#include "prefs_gpg.h"
#include "select-keys.h"
-extern struct GPGConfig prefs_gpg;
-
static void idle_function_for_gpgme(void)
{
while (gtk_events_pending())
GpgmeData data;
gpgme_data_new_from_filepart(&data,
- mimeinfo->filename,
+ mimeinfo->data.filename,
NULL,
mimeinfo->offset,
mimeinfo->length);
debug_print("gpgme_engine_version:\n%s\n",
gpgme_get_engine_info());
- if (prefs_gpg.gpg_warning) {
+ if (prefs_gpg_get_config()->gpg_warning) {
AlertValue val;
val = alertpanel_message_with_disable
"to be upgraded.\n"
"OpenPGP support disabled."), ALERT_WARNING);
if (val & G_ALERTDISABLE)
- prefs_gpg.gpg_warning = FALSE;
+ prefs_gpg_get_config()->gpg_warning = FALSE;
}
}
char **addrp;
#ifdef _WIN32
- // Start Winsock up
+ /* Start Winsock up */
WSADATA wsaData;
int nCode;
if ((nCode = WSAStartup(MAKEWORD(1, 1), &wsaData)) != 0) {
va_start(ap, msg);
if ((flags & SPAMC_LOG_TO_STDERR) != 0) {
- // create a log-line buffer
+ /* create a log-line buffer */
len = snprintf(buf, LOG_BUFSIZ, "spamc: ");
len += vsnprintf(buf+len, LOG_BUFSIZ-len, msg, ap);
- // avoid buffer overflow
+ /* avoid buffer overflow */
if (len > (LOG_BUFSIZ-2)) { len = (LOG_BUFSIZ-3); }
len += snprintf(buf+len, LOG_BUFSIZ-len, "\n");
static guint hook_id;
static int flags = SPAMC_RAW_MODE | SPAMC_SAFE_FALLBACK | SPAMC_CHECK_ONLY;
static gchar *username = NULL;
+static MessageCallback message_callback;
static SpamAssassinConfig config;
return FALSE;
debug_print("Filtering message %d\n", msginfo->msgnum);
- statusbar_print_all(_("SpamAssassin: filtering message..."));
+ if (message_callback != NULL)
+ message_callback(_("SpamAssassin: filtering message..."));
if ((fp = procmsg_open_message(msginfo)) == NULL) {
debug_print("failed to open message file\n");
prefs_file_close(pfile);
}
+void spamassassin_set_message_callback(MessageCallback callback)
+{
+ message_callback = callback;
+}
+
gint plugin_init(gchar **error)
{
if ((sylpheed_get_version() > VERSION_NUMERIC)) {
typedef struct _SpamAssassinConfig SpamAssassinConfig;
+typedef void (*MessageCallback) (gchar *);
+
typedef enum {
SPAMASSASSIN_DISABLED = 0,
SPAMASSASSIN_TRANSPORT_LOCALHOST = 1,
guint timeout;
};
-SpamAssassinConfig *spamassassin_get_config (void);
-void spamassassin_save_config (void);
+SpamAssassinConfig *spamassassin_get_config (void);
+void spamassassin_save_config (void);
+void spamassassin_set_message_callback (MessageCallback callback);
#endif
#include "prefs_gtk.h"
#include "foldersel.h"
#include "spamassassin.h"
+#include "statusbar.h"
#include "menu.h"
struct SpamAssassinPage
spamassassin_save_config();
}
+static void gtk_message_callback(gchar *message)
+{
+ statusbar_print_all(message);
+}
+
static struct SpamAssassinPage spamassassin_page;
gint plugin_init(gchar **error)
spamassassin_page.page.weight = 35.0;
prefs_gtk_register_page((PrefsPage *) &spamassassin_page);
+ spamassassin_set_message_callback(gtk_message_callback);
debug_print("SpamAssassin GTK plugin loaded\n");
return 0;
void plugin_done(void)
{
+ spamassassin_set_message_callback(NULL);
prefs_gtk_unregister_page((PrefsPage *) &spamassassin_page);
debug_print("SpamAssassin GTK plugin unloaded\n");
gtk_grab_add (plug->modality_window);
}
#else
- // g_print("Modality On for plug %p\n", plug);
+ /* g_print("Modality On for plug %p\n", plug); */
#endif
}
plug->modality_window = NULL;
}
#else
- // g_print("Modality Off for plug %p\n", plug);
+ /* g_print("Modality Off for plug %p\n", plug); */
#endif
}
#include "prefs_common.h"
#include "main.h"
#include "alertpanel.h"
+#include "gtk/manage_window.h"
#include "eggtrayicon.h"
#include "newmail.xpm"
g_vsnprintf(buf, sizeof(buf) - 2, format, args);
va_end(args);
- if (!strncasecmp(buf, "PASS ", 5))
+ if (!g_strncasecmp(buf, "PASS ", 5))
log_print("POP3> PASS ********\n");
else
log_print("POP3> %s\n", buf);
static void prefs_account_privacy_create(void)
{
GtkWidget *vbox1;
- GtkWidget *frame_mode;
- GtkWidget *vbox_mode;
- GtkWidget *frame1;
GtkWidget *vbox2;
- GtkWidget *hbox1;
- GtkWidget *label;
GtkWidget *default_encrypt_chkbtn;
GtkWidget *default_sign_chkbtn;
- GtkWidget *gnupg_mime_radiobtn;
- GtkWidget *gnupg_inline_radiobtn;
- GtkWidget *defaultkey_radiobtn;
- GtkWidget *emailkey_radiobtn;
- GtkWidget *customkey_radiobtn;
- GtkWidget *customkey_entry;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
for (i = 0; param[i].name != NULL; i++) {
name_len = strlen(param[i].name);
- if (strncasecmp(buf, param[i].name, name_len))
+ if (g_strncasecmp(buf, param[i].name, name_len))
continue;
if (buf[name_len] != '=')
continue;
break;
case P_BOOL:
if (param[i].defval != NULL) {
- if (!strcasecmp(param[i].defval, "TRUE"))
+ if (!g_strcasecmp(param[i].defval, "TRUE"))
*((gboolean *)param[i].data) = TRUE;
else
*((gboolean *)param[i].data) =
case P_STRING:
case P_PASSWORD:
if (tmpparam.defval) {
- if (!strncasecmp(tmpparam.defval, "ENV_", 4)) {
+ if (!g_strncasecmp(tmpparam.defval, "ENV_", 4)) {
str_data = g_strdup(g_getenv(param[i].defval + 4));
tmpparam.data = &str_data;
break;
break;
case P_BOOL:
if (tmpparam.defval) {
- if (!strcasecmp(tmpparam.defval, "TRUE"))
+ if (!g_strcasecmp(tmpparam.defval, "TRUE"))
bool_data = TRUE;
else
bool_data = atoi(tmpparam.defval)
static GtkWidget *color_dialog;
-static gboolean prefs_quote_colors_key_pressed (GtkWidget *widget,
- GdkEventKey *event,
- gpointer data);
static void quote_color_set_dialog (GtkWidget *widget,
gpointer data);
static void quote_colors_set_dialog_ok (GtkWidget *widget,
prefs_msg_colors->page.widget = table;
}
-static gboolean prefs_quote_colors_key_pressed(GtkWidget *widget,
- GdkEventKey *event, gpointer data)
-{
- if (event && event->keyval == GDK_Escape)
- gtk_main_quit();
- return FALSE;
-}
-
static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
{
gchar *type = (gchar *)data;
for (hp = hentry, hnum = 0; hp->name != NULL;
hp++, hnum++) {
- if (!strncasecmp(hp->name, buf,
+ if (!g_strncasecmp(hp->name, buf,
strlen(hp->name)))
break;
}
}
break;
case H_CONTENT_TYPE:
- if (!strncasecmp(hp, "multipart/", 10))
+ if (!g_strncasecmp(hp, "multipart/", 10))
MSG_SET_TMP_FLAGS(msginfo->flags, MSG_MULTIPART);
break;
#ifdef ALLOW_HEADER_HINT
month[3] = '\0';
for (p = monthstr; *p != '\0'; p += 3) {
- if (!strncasecmp(p, month, 3)) {
+ if (!g_strncasecmp(p, month, 3)) {
dmonth = (gint)(p - monthstr) / 3 + 1;
break;
}
mimeinfo = g_new0(MimeInfo, 1);
mimeinfo->content = MIMECONTENT_EMPTY;
- mimeinfo->filename = NULL;
+ mimeinfo->data.filename = NULL;
mimeinfo->type = MIMETYPE_UNKNOWN;
mimeinfo->encoding_type = ENC_UNKNOWN;
switch (mimeinfo->content) {
case MIMECONTENT_FILE:
if (mimeinfo->tmp)
- unlink(mimeinfo->filename);
- g_free(mimeinfo->filename);
+ unlink(mimeinfo->data.filename);
+ g_free(mimeinfo->data.filename);
break;
case MIMECONTENT_MEM:
if (mimeinfo->tmp)
- g_free(mimeinfo->data);
+ g_free(mimeinfo->data.mem);
default:
break;
}
encoding == ENC_BINARY)
return TRUE;
- infp = fopen(mimeinfo->filename, "rb");
+ infp = fopen(mimeinfo->data.filename, "rb");
if (!infp) {
perror("fopen");
return FALSE;
fclose(infp);
stat(tmpfilename, &statbuf);
- if (mimeinfo->tmp && (mimeinfo->filename != NULL))
- unlink(mimeinfo->filename);
- if (mimeinfo->filename != NULL)
- g_free(mimeinfo->filename);
- mimeinfo->filename = tmpfilename;
+ if (mimeinfo->tmp && (mimeinfo->data.filename != NULL))
+ unlink(mimeinfo->data.filename);
+ if (mimeinfo->data.filename != NULL)
+ g_free(mimeinfo->data.filename);
+ mimeinfo->data.filename = tmpfilename;
mimeinfo->tmp = TRUE;
mimeinfo->offset = 0;
mimeinfo->length = statbuf.st_size;
return FALSE;
}
- if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) {
- g_warning("Can't open file %s\n", mimeinfo->filename);
+ if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) {
+ g_warning("Can't open file %s\n", mimeinfo->data.filename);
return FALSE;
}
fclose(infp);
stat(tmpfilename, &statbuf);
- if (mimeinfo->tmp && (mimeinfo->filename != NULL))
- unlink(mimeinfo->filename);
- g_free(mimeinfo->filename);
- mimeinfo->filename = tmpfilename;
+ if (mimeinfo->tmp && (mimeinfo->data.filename != NULL))
+ unlink(mimeinfo->data.filename);
+ g_free(mimeinfo->data.filename);
+ mimeinfo->data.filename = tmpfilename;
mimeinfo->tmp = TRUE;
mimeinfo->offset = 0;
mimeinfo->length = statbuf.st_size;
if (mimeinfo->encoding_type != ENC_BINARY && !procmime_decode_content(mimeinfo))
return -1;
- if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) {
- FILE_OP_ERROR(mimeinfo->filename, "fopen");
+ if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) {
+ FILE_OP_ERROR(mimeinfo->data.filename, "fopen");
return -1;
}
if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) {
- FILE_OP_ERROR(mimeinfo->filename, "fseek");
+ FILE_OP_ERROR(mimeinfo->data.filename, "fseek");
fclose(infp);
return -1;
}
const char *str1 = gptr1;
const char *str2 = gptr2;
- return !strcasecmp(str1, str2);
+ return !g_strcasecmp(str1, str2);
}
static GHashTable *procmime_get_mime_type_table(void)
{
if (!charset)
return ENC_8BIT;
- else if (!strncasecmp(charset, "ISO-2022-", 9) ||
- !strcasecmp(charset, "US-ASCII"))
+ else if (!g_strncasecmp(charset, "ISO-2022-", 9) ||
+ !g_strcasecmp(charset, "US-ASCII"))
return ENC_7BIT;
- else if (!strcasecmp(charset, "ISO-8859-5") ||
- !strncasecmp(charset, "KOI8-", 5) ||
- !strcasecmp(charset, "Windows-1251"))
+ else if (!g_strcasecmp(charset, "ISO-8859-5") ||
+ !g_strncasecmp(charset, "KOI8-", 5) ||
+ !g_strcasecmp(charset, "Windows-1251"))
return ENC_8BIT;
- else if (!strncasecmp(charset, "ISO-8859-", 9))
+ else if (!g_strncasecmp(charset, "ISO-8859-", 9))
return ENC_QUOTED_PRINTABLE;
else
return ENC_8BIT;
procmime_decode_content(mimeinfo);
- fp = fopen(mimeinfo->filename, "rb");
+ fp = fopen(mimeinfo->data.filename, "rb");
if (fp == NULL) {
- FILE_OP_ERROR(mimeinfo->filename, "fopen");
+ FILE_OP_ERROR(mimeinfo->data.filename, "fopen");
return;
}
fseek(fp, mimeinfo->offset, SEEK_SET);
hentry[0].body, hentry[1].body,
hentry[2].body, hentry[3].body,
hentry[4].body,
- mimeinfo->filename, content_start,
+ mimeinfo->data.filename, content_start,
mimeinfo->length - (content_start - mimeinfo->offset));
} else {
MimeInfo *subinfo;
subinfo->encoding_type = ENC_UNKNOWN;
subinfo->type = MIMETYPE_TEXT;
subinfo->subtype = g_strdup("plain");
- subinfo->filename = g_strdup(mimeinfo->filename);
+ subinfo->data.filename = g_strdup(mimeinfo->data.filename);
subinfo->offset = content_start;
subinfo->length = mimeinfo->length - (content_start - mimeinfo->offset);
procmime_decode_content(mimeinfo);
- fp = fopen(mimeinfo->filename, "rb");
+ fp = fopen(mimeinfo->data.filename, "rb");
if (fp == NULL) {
- FILE_OP_ERROR(mimeinfo->filename, "fopen");
+ FILE_OP_ERROR(mimeinfo->data.filename, "fopen");
return;
}
fseek(fp, mimeinfo->offset, SEEK_SET);
hentry[0].body, hentry[1].body,
hentry[2].body, hentry[3].body,
hentry[4].body,
- mimeinfo->filename, lastoffset,
+ mimeinfo->data.filename, lastoffset,
(ftell(fp) - strlen(buf)) - lastoffset - 1);
}
mimeinfo->content = MIMECONTENT_FILE;
if (parent != NULL)
g_node_append(parent->node, mimeinfo->node);
- mimeinfo->filename = g_strdup(filename);
+ mimeinfo->data.filename = g_strdup(filename);
mimeinfo->offset = offset;
mimeinfo->length = length;
mimeinfo->encoding_type = ENC_UNKNOWN;
mimeinfo->type = MIMETYPE_MESSAGE;
mimeinfo->subtype = g_strdup("rfc822");
- mimeinfo->filename = g_strdup(filename);
+ mimeinfo->data.filename = g_strdup(filename);
mimeinfo->offset = offset;
mimeinfo->length = buf.st_size - offset;
/* write header */
switch (mimeinfo->content) {
case MIMECONTENT_FILE:
- if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) {
- FILE_OP_ERROR(mimeinfo->filename, "fopen");
+ if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) {
+ FILE_OP_ERROR(mimeinfo->data.filename, "fopen");
return -1;
}
fseek(infp, mimeinfo->offset, SEEK_SET);
break;
case MIMECONTENT_MEM:
- fwrite(mimeinfo->data, strlen(mimeinfo->data), sizeof(gchar), fp);
+ fwrite(mimeinfo->data.mem, strlen(mimeinfo->data.mem), sizeof(gchar), fp);
break;
default:
switch (mimeinfo->content) {
case MIMECONTENT_FILE:
- if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) {
- FILE_OP_ERROR(mimeinfo->filename, "fopen");
+ if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) {
+ FILE_OP_ERROR(mimeinfo->data.filename, "fopen");
return -1;
}
fseek(infp, mimeinfo->offset, SEEK_SET);
break;
case MIMECONTENT_MEM:
- str = g_strdup(mimeinfo->data);
+ str = g_strdup(mimeinfo->data.mem);
if (((str2 = strstr(str, boundary)) != NULL) && ((str2 - str) >= 2) &&
(*(str2 - 1) == '-') && (*(str2 - 2) == '-'))
*(str2 - 2) = '\0';
if (G_NODE_IS_LEAF(mimeinfo->node)) {
switch (mimeinfo->content) {
case MIMECONTENT_FILE:
- if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) {
- FILE_OP_ERROR(mimeinfo->filename, "fopen");
+ if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) {
+ FILE_OP_ERROR(mimeinfo->data.filename, "fopen");
return -1;
}
copy_file_part_to_fp(infp, mimeinfo->offset, mimeinfo->length, fp);
return 0;
case MIMECONTENT_MEM:
- fwrite(mimeinfo->data, strlen(mimeinfo->data), sizeof(gchar), fp);
+ fwrite(mimeinfo->data.mem, strlen(mimeinfo->data.mem), sizeof(gchar), fp);
return 0;
default:
union
{
gchar *filename;
- gchar *data;
- };
+ gchar *mem;
+ } data;
gboolean tmp;
GNode *node;
gchar tmp[MAXPATHLEN + 1];
g_snprintf(tmp, sizeof(tmp), "%s%ctmpmsg.out.%08x",
- get_rc_dir(), G_DIR_SEPARATOR, (guint)random());
+ get_rc_dir(), G_DIR_SEPARATOR, (guint) rand());
if (procmsg_remove_special_headers(file, tmp) !=0)
return -1;
if (!msginfo2->var_name) \
return -1; \
\
- return strcasecmp(msginfo1->var_name, msginfo2->var_name); \
+ return g_strcasecmp(msginfo1->var_name, msginfo2->var_name); \
}
CMP_FUNC_DEF(summary_cmp_by_to, to);
if (!str2)
return -1;
- return strcasecmp(str1, str2);
+ return g_strcasecmp(str1, str2);
}
static gint summary_cmp_by_simplified_subject
if ((mimeinfo->type == MIMETYPE_MESSAGE) && !g_strcasecmp(mimeinfo->subtype, "rfc822")) {
FILE *fp;
- fp = fopen(mimeinfo->filename, "rb");
+ fp = fopen(mimeinfo->data.filename, "rb");
fseek(fp, mimeinfo->offset, SEEK_SET);
headers = textview_scan_header(textview, fp);
if (headers) {
(mimeinfo->type != MIMETYPE_MESSAGE))
return;
- if (strcasecmp(mimeinfo->subtype, "alternative") == 0) {
+ if (g_strcasecmp(mimeinfo->subtype, "alternative") == 0) {
GNode * prefered_body;
int prefered_score;
score = 2;
if (submime->subtype != NULL) {
- if (strcasecmp(submime->subtype, "plain") == 0)
+ if (g_strcasecmp(submime->subtype, "plain") == 0)
score = 3;
}
}
g_free(filename);
} else {
- tmpfp = fopen(mimeinfo->filename, "rb");
+ tmpfp = fopen(mimeinfo->data.filename, "rb");
fseek(tmpfp, mimeinfo->offset, SEEK_SET);
debug_print("Viewing text content of type: %s (length: %d)\n", mimeinfo->subtype, mimeinfo->length);
while ((fgets(buf, sizeof(buf), tmpfp) != NULL) &&
* if still inside an <a>, but already parsed past HREF */
str = strtok(str, " ");
if (str) {
- parser->href = strdup(str);
+ parser->href = g_strdup(str);
/* the URL may (or not) be followed by the
* referenced text */
str = strtok(NULL, "");
/* find end point of URI */
for (ep_ = scanpos; *ep_ != '\0'; ep_++) {
if (!isgraph(*(const guchar *)ep_) ||
- !isascii(*(const guchar *)ep_) ||
+ !IS_ASCII(*(const guchar *)ep_) ||
strchr("()<>\"", *ep_))
break;
}
/* valid mail address characters */
#define IS_RFC822_CHAR(ch) \
- (isascii(ch) && \
+ (IS_ASCII(ch) && \
(ch) > 32 && \
(ch) != 127 && \
!isspace(ch) && \
!strchr("(),;<>\"", (ch)))
/* alphabet and number within 7bit ASCII */
-#define IS_ASCII_ALNUM(ch) (isascii(ch) && isalnum(ch))
+#define IS_ASCII_ALNUM(ch) (IS_ASCII(ch) && isalnum(ch))
#define IS_QUOTE(ch) ((ch) == '\'' || (ch) == '"')
static GHashTable *create_domain_tab(void)