URL:
  <https://savannah.gnu.org/bugs/?66434>

                 Summary: [troff] want `so` and related requests to accept
file names with embedded spaces
                   Group: GNU roff
               Submitter: gbranden
               Submitted: Tue 12 Nov 2024 03:22:01 PM UTC
                Category: Core
                Severity: 1 - Wish
              Item Group: Feature change
                  Status: In Progress
                 Privacy: Public
             Assigned to: gbranden
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Tue 12 Nov 2024 03:22:01 PM UTC By: G. Branden Robinson <gbranden>
It'd be nice if this worked.


$ cat ATTIC/foo.groff 
foo
.so bar baz.groff
qux
$ cat ATTIC/bar\ baz.groff 
bar baz
$ (cd ATTIC; groff -a -ww -T ascii foo.groff | cat -s)
troff:foo.groff:2: error: cannot open 'bar': No such file or directory
<beginning of page>
foo qux


But with this patch and a couple of prerequisite changes:


diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index 6ad2770eb..cba7ecc75 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -6570,23 +6570,17 @@ static void while_continue_request()
 
 void do_source(bool quietly)
 {
-  symbol nm = get_long_name(true /* required */);
-  if (nm.is_null())
-    skip_line();
-  else {
-    while (!tok.is_newline() && !tok.is_eof())
-      tok.next();
-    errno = 0;
-    FILE *fp = include_search_path.open_file_cautious(nm.contents());
-    if (fp)
-      input_stack::push(new file_iterator(fp, nm.contents()));
-    else
-      // Suppress diagnostic only if we're operating quietly and it's an
-      // expected problem.
-      if (!(quietly && (ENOENT == errno)))
-       error("cannot open '%1': %2", nm.contents(), strerror(errno));
-    tok.next();
-  }
+  char *filename = read_string();
+  errno = 0;
+  FILE *fp = include_search_path.open_file_cautious(filename);
+  if (fp != 0 /* nullptr */)
+    input_stack::push(new file_iterator(fp, filename));
+  else
+    // Suppress diagnostic only if we're operating quietly and it's an
+    // expected problem.
+    if (!(quietly && (ENOENT == errno)))
+      error("cannot open '%1': %2", filename, strerror(errno));
+  tok.next();
 }
 
 void source_request() // .so
@@ -8740,26 +8734,20 @@ static void process_startup_file(const char
*filename)
 
 void do_macro_source(bool quietly)
 {
-  symbol nm = get_long_name(true /* required */);
-  if (nm.is_null())
-    skip_line();
-  else {
-    while (!tok.is_newline() && !tok.is_eof())
-      tok.next();
-    char *path;
-    FILE *fp = mac_path->open_file(nm.contents(), &path);
-    if (fp != 0 /* nullptr */) {
-      input_stack::push(new file_iterator(fp, symbol(path).contents()));
-      free(path);
-    }
-    else
-      // Suppress diagnostic only if we're operating quietly and it's an
-      // expected problem.
-      if (!quietly && (ENOENT == errno))
-       warning(WARN_FILE, "cannot open macro file '%1': %2",
-               nm.contents(), strerror(errno));
-    tok.next();
+  char *macro_filename = read_string();
+  char *path;
+  FILE *fp = mac_path->open_file(macro_filename, &path);
+  if (fp != 0 /* nullptr */) {
+    input_stack::push(new file_iterator(fp, macro_filename));
+    free(path);
   }
+  else
+    // Suppress diagnostic only if we're operating quietly and it's an
+    // expected problem.
+    if (!quietly && (ENOENT == errno))
+      warning(WARN_FILE, "cannot open macro file '%1': %2",
+             macro_filename, strerror(errno));
+  tok.next();
 }
 
 void macro_source_request() // .mso


...it can.


$ (cd ATTIC; ../build/test-groff -a -ww -T ascii foo.groff | cat -s)
<beginning of page>
foo bar baz qux









    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?66434>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to