From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Subject: [devel] Q: bison strdup Date: Sun, 8 Oct 2006 02:00:49 +0400 Message-ID: <20061007220049.GA21784@localhost.localdomain> (raw) [-- Attachment #1.1: Type: text/plain, Size: 253 bytes --] Специалисты по бизону! Кто-нибудь знает, когда я хочу немного модифицировать $1, нужно strdup делать или нет? А то у меня после вот этого вот изменения SEGV стал наблюдаться. Если нужно делать strdup, как тогда в конце правильно очистить память? [-- Attachment #1.2: zshgiChuD --] [-- Type: text/plain, Size: 2071 bytes --] commit a1db68d1ae0e4fcc6a3e93322349a0eb4d25befc Author: Alexey Tourbin <at@altlinux.ru> Date: Sun Oct 8 01:25:49 2006 +0400 implemented -u option to convert underscores in tag and branch names to dots This is like git-cvsimport -u, but arguably smarter: each dot is converted iff the previous character was a digit. diff --git a/gram.y b/gram.y index 2ef1e20..413228e 100644 --- a/gram.y +++ b/gram.y @@ -21,6 +21,20 @@ #include "cvs.h" void yyerror (char *msg); +extern int opt_convert_underscores; + +static char * +fixup_symbol(char *s) +{ + if (opt_convert_underscores) { + char *p = s; + while (*++p) + if (*p == '_' && isdigit(p[-1])) + *p = '.'; + } + return s; +} + %} %union { @@ -95,7 +109,7 @@ symbols : symbols symbol symbol : name COLON NUMBER { $$ = calloc (1, sizeof (cvs_symbol)); - $$->name = $1; + $$->name = fixup_symbol ($1); $$->number = $3; } ; diff --git a/parsecvs.c b/parsecvs.c index e15eede..bd256ed 100644 --- a/parsecvs.c +++ b/parsecvs.c @@ -694,6 +694,8 @@ static void load_status_next (void) #define OBJ_PACK_TIME 1024 +int opt_convert_underscores = 0; + int main (int argc, char **argv) { @@ -713,8 +715,9 @@ main (int argc, char **argv) static struct option options[] = { { "help", 0, 0, 'h' }, { "version", 0, 0, 'V' }, + { "convert-underscores", 0, 0, 'u' }, }; - int c = getopt_long(argc, argv, "+hV", options, NULL); + int c = getopt_long(argc, argv, "+hVu", options, NULL); if (c < 0) break; switch (c) { @@ -730,6 +733,9 @@ main (int argc, char **argv) "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); return 0; + case 'u': + opt_convert_underscores = 1; + break; default: /* error message already emitted */ fprintf(stderr, "Try `%s --help' for more information.\n", argv[0]); return 1; [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2006-10-07 22:00 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-10-07 22:00 Alexey Tourbin [this message] 2006-10-07 23:17 ` Alexey Tourbin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20061007220049.GA21784@localhost.localdomain \ --to=at@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git