Page MenuHomeFreeBSD

D13939.diff
No OneTemporary

D13939.diff

Index: head/bin/cat/Makefile
===================================================================
--- head/bin/cat/Makefile
+++ head/bin/cat/Makefile
@@ -6,6 +6,12 @@
PACKAGE=runtime
PROG= cat
+.ifdef BOOTSTRAPPING
+# For the bootstrap cat we disable all wide char support to allow building
+# on Linux/macOS
+CFLAGS+=-DBOOTSTRAP_CAT
+.endif
+
HAS_TESTS=
SUBDIR.${MK_TESTS}+= tests
Index: head/bin/cat/cat.c
===================================================================
--- head/bin/cat/cat.c
+++ head/bin/cat/cat.c
@@ -96,6 +96,20 @@
*/
#define BUFSIZE_SMALL (MAXPHYS)
+
+/*
+ * For the bootstrapped cat binary (needed for locked appending to METALOG), we
+ * disable all flags except -l and -u to avoid non-portable function calls.
+ * In the future we may instead want to write a small portable bootstrap tool
+ * that locks the output file before writing to it. However, for now
+ * bootstrapping cat without multibyte support is the simpler solution.
+ */
+#ifdef BOOTSTRAP_CAT
+#define SUPPORTED_FLAGS "lu"
+#else
+#define SUPPORTED_FLAGS "belnstuv"
+#endif
+
int
main(int argc, char *argv[])
{
@@ -104,7 +118,7 @@
setlocale(LC_CTYPE, "");
- while ((ch = getopt(argc, argv, "belnstuv")) != -1)
+ while ((ch = getopt(argc, argv, SUPPORTED_FLAGS)) != -1)
switch (ch) {
case 'b':
bflag = nflag = 1; /* -b implies -n */
@@ -158,7 +172,7 @@
usage(void)
{
- fprintf(stderr, "usage: cat [-belnstuv] [file ...]\n");
+ fprintf(stderr, "usage: cat [-" SUPPORTED_FLAGS "] [file ...]\n");
exit(1);
/* NOTREACHED */
}
@@ -187,6 +201,7 @@
if (fd < 0) {
warn("%s", path);
rval = 1;
+#ifndef BOOTSTRAP_CAT
} else if (cooked) {
if (fd == STDIN_FILENO)
cook_cat(stdin);
@@ -195,6 +210,7 @@
cook_cat(fp);
fclose(fp);
}
+#endif
} else {
raw_cat(fd);
if (fd != STDIN_FILENO)
@@ -206,6 +222,7 @@
}
}
+#ifndef BOOTSTRAP_CAT
static void
cook_cat(FILE *fp)
{
@@ -295,6 +312,7 @@
if (ferror(stdout))
err(1, "stdout");
}
+#endif /* BOOTSTRAP_CAT */
static void
raw_cat(int rfd)

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 9, 2:52 AM (20 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16541110
Default Alt Text
D13939.diff (2 KB)

Event Timeline