From patchwork Sat Oct 17 13:13:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40746 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CDF4D3857C4E; Sat, 17 Oct 2020 13:14:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CDF4D3857C4E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1602940447; bh=WfJPhcUAeLs9qNgaCOAzNBn7+4QTtz5Ai8erz6CFNT4=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=HXq2ZQx5+JZZ6K/fmf4R0jgS/FBwGM7kmI6P9eFVOYu6ruFuSYi75ZsB/vWUUs6V/ Il7A4w133K4dWrb28wZW/cM4zSCbars8KGur6pT3Ku7OfScfDZLjwjD8BXF7dOkyR+ OMOxSLdqSLHrQ6epsP2kbNwXI5CUqhhWSv0wP0GQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by sourceware.org (Postfix) with ESMTPS id 92CA23857C4D for ; Sat, 17 Oct 2020 13:14:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 92CA23857C4D Received: by mail-wr1-x443.google.com with SMTP id t9so6462892wrq.11 for ; Sat, 17 Oct 2020 06:14:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=WfJPhcUAeLs9qNgaCOAzNBn7+4QTtz5Ai8erz6CFNT4=; b=JkGDjWuyBZs8WSP5VQ5KVnJNcueMTlOXNZLFlRk1nHRiwhC5tq8f1G0mln//WajOGs WhS1BRPxHRjBSC6rDhOffBX1XkIGQgENwdgUeFjMugvAOLrt7V8apnRoxddftAF3l3Rs PS6Kdowuknuzj/lnExVXZyVRZEotWhKiQKM3PSduWkwYkHuV3rQe+2JAO5dasxgCQ4ai 5Yd+iWkUMtffwD0+s2wxSd1PmIBRe4zibAv9klt01L7UlOe+kQcZWWQqVTWO0fa4qC3R qPHApT4lCXd5UfSGtuh5hf20LB8Gvjx3dNH8JLmd2jITUmW1NBWmH9J1XMS9r0hmnpVW QcIg== X-Gm-Message-State: AOAM5328rmqjQY+4iB1tX+J4j6GnCiR/+zQ0BfXTQCMMajvgc5TZIkq8 KfARjJ0S1vAAHVhqJaAzFWk= X-Google-Smtp-Source: ABdhPJyqW4nnAhe5eGXnJxeukVy8OoFzPFTAqys5UdTY4a733XowB1y+8TECClfn97D9eErCgiTAKg== X-Received: by 2002:adf:e8cb:: with SMTP id k11mr10058653wrn.91.1602940443680; Sat, 17 Oct 2020 06:14:03 -0700 (PDT) Received: from localhost.localdomain ([170.253.49.0]) by smtp.googlemail.com with ESMTPSA id c18sm8532205wrq.5.2020.10.17.06.14.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 06:14:02 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH] regex.3: Add example program Date: Sat, 17 Oct 2020 15:13:25 +0200 Message-Id: <20201017131324.123039-1-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" $ gcc -Wall -Wextra -Werror -pedantic regex.c -o regex $ ./regex String = "1) John Driverhacker; 2) John Doe; 3) John Foo; " #0 match: rm_so = 25; rm_eo = 32; len = 7 substring = "John Do" #1 match: rm_so = 6; rm_eo = 14; len = 8 substring = "John Foo" Signed-off-by: Alejandro Colomar --- Hello Michael, Here's the example for regex.3 :-} Best regards, Alex man3/regex.3 | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/man3/regex.3 b/man3/regex.3 index 7c5132995..94da88b7e 100644 --- a/man3/regex.3 +++ b/man3/regex.3 @@ -337,6 +337,50 @@ T} Thread safety MT-Safe .TE .SH CONFORMING TO POSIX.1-2001, POSIX.1-2008. +.SH EXAMPLES +.EX +#include +#include +#include +#include +#include + +#define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0])) + +static const char *const str = + "1) John Driverhacker;\en2) John Doe;\en3) John Foo;\en"; +static const char *const re = "John.*o"; + +int main(void) +{ + static const char *s = str; + regex_t regex; + regmatch_t pmatch[1]; + regoff_t len; + + if (regcomp(®ex, re, REG_NEWLINE)) + exit(EXIT_FAILURE); + + printf("String = \\"%s\\"\en", str); + + for (ptrdiff_t i = 0; ; i++) { + if (regexec(®ex, s, ARRAY_SIZE(pmatch), pmatch, 0)) + break; + + len = pmatch[0].rm_eo \- pmatch[0].rm_so; + printf("#%td match:\en", i); + printf("rm_so = %jd; rm_eo = %jd; len = %jd\en", + (intmax_t) pmatch[0].rm_so, + (intmax_t) pmatch[0].rm_eo, + (intmax_t) len); + printf("substring = \\"%.*s\\"\en", len, s + pmatch[0].rm_so); + + s += pmatch[0].rm_eo; + } + + exit(EXIT_SUCCESS); +} +.EE .SH SEE ALSO .BR grep (1), .BR regex (7)