X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=src%2Finspect.c;h=82139362d449dcb2602dd9e58f7dfc242f311116;hp=c7182b4ef5ebc61b170de879073b95e14507419d;hb=439a42efdb052748c8457f866b2c68a581034826;hpb=3c1f762abed92f7a358f3bc93e3396d0606b18ad diff --git a/src/inspect.c b/src/inspect.c index c7182b4..8213936 100644 --- a/src/inspect.c +++ b/src/inspect.c @@ -3260,101 +3260,3 @@ guestfs___feature_available (guestfs_h *g, const char *feature) return r == 0 ? 1 : 0; } - -#ifdef HAVE_PCRE - -/* Match a regular expression which contains no captures. Returns - * true if it matches or false if it doesn't. - */ -int -guestfs___match (guestfs_h *g, const char *str, const pcre *re) -{ - size_t len = strlen (str); - int vec[30], r; - - r = pcre_exec (re, NULL, str, len, 0, 0, vec, sizeof vec / sizeof vec[0]); - if (r == PCRE_ERROR_NOMATCH) - return 0; - if (r != 1) { - /* Internal error -- should not happen. */ - warning (g, "%s: %s: pcre_exec returned unexpected error code %d when matching against the string \"%s\"\n", - __FILE__, __func__, r, str); - return 0; - } - - return 1; -} - -/* Match a regular expression which contains exactly one capture. If - * the string matches, return the capture, otherwise return NULL. The - * caller must free the result. - */ -char * -guestfs___match1 (guestfs_h *g, const char *str, const pcre *re) -{ - size_t len = strlen (str); - int vec[30], r; - - r = pcre_exec (re, NULL, str, len, 0, 0, vec, sizeof vec / sizeof vec[0]); - if (r == PCRE_ERROR_NOMATCH) - return NULL; - if (r != 2) { - /* Internal error -- should not happen. */ - warning (g, "%s: %s: internal error: pcre_exec returned unexpected error code %d when matching against the string \"%s\"", - __FILE__, __func__, r, str); - return NULL; - } - - return safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); -} - -/* Match a regular expression which contains exactly two captures. */ -int -guestfs___match2 (guestfs_h *g, const char *str, const pcre *re, - char **ret1, char **ret2) -{ - size_t len = strlen (str); - int vec[30], r; - - r = pcre_exec (re, NULL, str, len, 0, 0, vec, 30); - if (r == PCRE_ERROR_NOMATCH) - return 0; - if (r != 3) { - /* Internal error -- should not happen. */ - warning (g, "%s: %s: internal error: pcre_exec returned unexpected error code %d when matching against the string \"%s\"", - __FILE__, __func__, r, str); - return 0; - } - - *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); - *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]); - - return 1; -} - -/* Match a regular expression which contains exactly three captures. */ -int -guestfs___match3 (guestfs_h *g, const char *str, const pcre *re, - char **ret1, char **ret2, char **ret3) -{ - size_t len = strlen (str); - int vec[30], r; - - r = pcre_exec (re, NULL, str, len, 0, 0, vec, 30); - if (r == PCRE_ERROR_NOMATCH) - return 0; - if (r != 4) { - /* Internal error -- should not happen. */ - warning (g, "%s: %s: internal error: pcre_exec returned unexpected error code %d when matching against the string \"%s\"", - __FILE__, __func__, r, str); - return 0; - } - - *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); - *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]); - *ret3 = safe_strndup (g, &str[vec[6]], vec[7]-vec[6]); - - return 1; -} - -#endif /* HAVE_PCRE */