Initial support for lastlog -r on win32 (Richard)

This commit is contained in:
Richard Hitt 2012-07-25 22:12:42 +02:00 committed by Berke Viktor
parent 0d36e0cd2f
commit ead7f234e5
2 changed files with 24 additions and 17 deletions

View File

@ -2386,13 +2386,13 @@ cmd_lastlog (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (*word_eol[2]) if (*word_eol[2])
{ {
if (!strcmp (word[2], "-r")) if (!strcmp (word[2], "-r"))
#ifdef WIN32 {
lastlog (sess, word_eol[3], FALSE);
#else
lastlog (sess, word_eol[3], TRUE); lastlog (sess, word_eol[3], TRUE);
#endif }
else else
{
lastlog (sess, word_eol[2], FALSE); lastlog (sess, word_eol[2], FALSE);
}
return TRUE; return TRUE;
} }

View File

@ -700,20 +700,23 @@ fe_beep (void)
gdk_beep (); gdk_beep ();
} }
#ifndef WIN32
static int 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 void
fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp) fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp)
{ {
#ifndef WIN32 GRegex *search_re = NULL;
regex_t reg; GError *err = NULL;
#endif
if (gtk_xtext_is_empty (sess->res->buffer)) if (gtk_xtext_is_empty (sess->res->buffer))
{ {
@ -728,14 +731,18 @@ fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp)
return; return;
} }
#ifndef WIN32 /* TODO: add arg 'match' and if it's TRUE don't use G_REGEX_CASELESS
if (regcomp (&reg, sstr, REG_ICASE | REG_EXTENDED | REG_NOSUB) == 0) * 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, PrintText (lastlog_sess, _(err->message));
(void *) lastlog_regex_cmp, &reg); return;
regfree (&reg);
} }
#endif
gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer,
(void *) lastlog_regex_cmp, search_re);
g_regex_unref (search_re);
} }
void void