[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Groff-commit] groff/src/roff/groff read_groff_options.pl
From: |
Bernd Warken |
Subject: |
[Groff-commit] groff/src/roff/groff read_groff_options.pl |
Date: |
Thu, 25 Apr 2013 22:36:25 +0000 |
CVSROOT: /cvsroot/groff
Module name: groff
Changes by: Bernd Warken <bwarken> 13/04/25 22:36:25
Added files:
src/roff/groff : read_groff_options.pl
Log message:
Add file <groff_top>/src/roff/groff/read_groff_options.pl
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/groff/src/roff/groff/read_groff_options.pl?cvsroot=groff&rev=1.1
Patches:
Index: read_groff_options.pl
===================================================================
RCS file: read_groff_options.pl
diff -N read_groff_options.pl
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ read_groff_options.pl 25 Apr 2013 22:36:24 -0000 1.1
@@ -0,0 +1,165 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use diagnostics;
+
+
+########################################################################
+# Legalese
+########################################################################
+
+use constant LASTUPDATE => '25 Apr 2013'; # date of last update
+
+### The following constants `LICENSE[12]' are the license for this
+### file using `GPL' >= 3
+
+use constant LICENSE1 => q*
+read_groff_options.pl - generate lines with the `groff' options.
+
+Source file position: <groff-source>/src/roff/groff/read_groff_options.pl
+*;
+
+use constant LICENSE2 => q*
+Copyright (C) 2013
+ Free Software Foundation, Inc.
+ Written by Bernd Warken <address@hidden>.
+
+This file is part of `groff'.
+
+ `GNU groff' is free software: you can redistribute it and/or modify it
+under the terms of the `GNU General Public License' as published by the
+`Free Software Foundation', either version 3 of the License, or (at your
+option) any later version.
+
+ `GNU groff' is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the `GNU
+General Public License' for more details.
+
+ You should have received a copy of the 'GNU General Public License`
+along with `groff', see the files `COPYING' and `LICENSE' in the top
+directory of the `groff' source package. If not, see
+<http://www.gnu.org/licenses/>.*;
+
+
+use constant DOCUMENTATION => q*
+ This file is not installed, but is used to generate output
+containing information of the `groff' options, which are read from the
+function `synopsis' of the file `groff.cpp' in
+`<groff-source>/src/roff/groff/'. The output is something like:
+
+groff_noarg: CENRSUVXZabceghijklpstvz
+groff_witharg: DFIKLMPTWdfmnorw
+*;
+
+
+##### end legalese
+
+$\ = "\n"; # adds newline at each print
+$/ = "\n"; # newline separates input
+$| = 1; # flush after each print or write command
+
+
+my $file = undef;
+{
+ use constant FALSE => 0;
+ use constant TRUE => 1;
+
+ use File::Spec qw[];
+
+ my $arg = shift;
+ my $cpp = 'groff.cpp';
+
+ if ( defined($arg) ) {
+ if ( -d $arg ) {
+ $file = File::Spec->catfile($arg, $cpp);
+ $file = undef unless ( -f $file );;
+ }
+ if ( -f $arg && $arg =~ /groff.cpp$/ ) {
+ $file = $arg;
+ }
+ } else { # no argument
+ if ( -f $cpp ) {
+ $file = $cpp;
+ }
+ }
+ die "read_groff_options.pl: needs a directory with $cpp as argument: $!."
+ unless ( defined($file) );
+
+}
+
+# $file is cpp-file
+
+my @lines = ();
+{
+ open(FH, '<', $file);
+ my $start_synopsis = FALSE;
+ foreach ( <FH> ) {
+ chomp;
+ if ( /^void\s+synopsis\(/ ) {
+ $start_synopsis = TRUE;
+ next;
+ }
+ if ( $start_synopsis ) {
+ if ( /\[-/ ) {
+ s/\\n//g;
+ push @lines, $_;
+ $start_synopsis = FALSE;
+ }
+ next;
+ }
+ if ( @lines ) {
+ if ( /\[-/ ) {
+ s/\\n//g;
+ push @lines, $_;
+ next;
+ } else {
+ last;
+ }
+ }
+ next;
+ }
+}
+
+{
+ my $noarg = '';
+ my $witharg = '';
+ my $first = shift @lines;
+ chomp $first;
+ $first =~ s/^[^-]*-(\w+)\]\s*//;
+ $noarg = $1;
+ unshift @lines, $first;
+
+ foreach ( @lines ) {
+ my $s = $_;
+ while ( $s =~ /-/ ) {
+ $s =~ s/^[^-]*-(\w)\w+]//;
+ $witharg .= $1;
+ }
+ }
+
+ sub sort_opts {
+ my @opts = split '', shift;
+ @opts = sort @opts;
+ return join '', @opts;
+ }
+
+ my $res = &sort_opts($noarg);
+ print 'groff_noarg: ' . $res;
+
+ $res = &sort_opts($witharg);
+ print 'groff_witharg: ' . $res;
+}
+
+print '';
+print '#' x 30 . ' License ' . '#' x 30;
+print q*
+groff_options.info - 2 lines with the `groff' options.
+
+This file is generated by the run of `make' in the `groff' source by
+the file <groff-source>/src/roff/groff/read_groff_options.pl.
+
+This file `groff_options.info' is installed in the `groff libdir'.*;
+
+print LICENSE2;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Groff-commit] groff/src/roff/groff read_groff_options.pl,
Bernd Warken <=