diff options
author | Richard Hitt <rbh00@netcom.com> | 2012-07-25 22:12:42 +0200 |
---|---|---|
committer | Berke Viktor <bviktor@hexchat.org> | 2012-07-25 22:14:27 +0200 |
commit | ead7f234e5e993eea7cf2f0e0059e463acc926fd (patch) | |
tree | 87c0c43a3d79ba65ebd46052e9f985f9d46eb4c2 | |
parent | 0d36e0cd2faec00de7601b432a7cac293eea0b24 (diff) |
Initial support for lastlog -r on win32 (Richard)
-rw-r--r-- | src/common/outbound.c | 8 | ||||
-rw-r--r-- | src/fe-gtk/fe-gtk.c | 33 |
2 files changed, 24 insertions, 17 deletions
diff --git a/src/common/outbound.c b/src/common/outbound.c index e083eff2..011deaeb 100644 --- a/src/common/outbound.c +++ b/src/common/outbound.c @@ -2386,13 +2386,13 @@ cmd_lastlog (struct session *sess, char *tbuf, char *word[], char *word_eol[]) if (*word_eol[2]) { if (!strcmp (word[2], "-r")) -#ifdef WIN32 - lastlog (sess, word_eol[3], FALSE); -#else + { lastlog (sess, word_eol[3], TRUE); -#endif + } else + { lastlog (sess, word_eol[2], FALSE); + } return TRUE; } diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index 318395a2..fbaf677b 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -700,20 +700,23 @@ fe_beep (void) gdk_beep (); } -#ifndef WIN32 static int -lastlog_regex_cmp (char *a, regex_t *reg) +lastlog_regex_cmp (char *a, GRegex *reg) { - return !regexec (reg, a, 1, NULL, REG_NOTBOL); + GMatchInfo *gmi; + int ret; + + g_regex_match (reg, a, 0, &gmi); + ret = (g_match_info_matches (gmi))? TRUE: FALSE; + g_match_info_free (gmi); + return ret; } -#endif void fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp) { -#ifndef WIN32 - regex_t reg; -#endif + GRegex *search_re = NULL; + GError *err = NULL; if (gtk_xtext_is_empty (sess->res->buffer)) { @@ -728,14 +731,18 @@ fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp) return; } -#ifndef WIN32 - if (regcomp (®, sstr, REG_ICASE | REG_EXTENDED | REG_NOSUB) == 0) + /* TODO: add arg 'match' and if it's TRUE don't use G_REGEX_CASELESS + * and for that matter don't use nocasesetrstr() above either */ + search_re = g_regex_new (sstr, G_REGEX_CASELESS, 0, &err); + if (err) { - gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer, - (void *) lastlog_regex_cmp, ®); - regfree (®); + PrintText (lastlog_sess, _(err->message)); + return; } -#endif + + gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer, + (void *) lastlog_regex_cmp, search_re); + g_regex_unref (search_re); } void |