Stuf
authorEric Andersen <andersen@codepoet.org>
Thu, 28 Oct 1999 16:06:25 +0000 (16:06 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 28 Oct 1999 16:06:25 +0000 (16:06 -0000)
console-tools/deallocvt.c
deallocvt.c
editors/sed.c [new file with mode: 0644]
find.c
findutils/find.c
findutils/grep.c
grep.c
sed.c [new file with mode: 0644]

index a8feeb53c90d1ac8e4b4cd336c3345d50393687c..ae4dbb5a8cc93f4d288f9f983cf0b78d6fa88b28 100644 (file)
@@ -2,6 +2,7 @@
  * disalloc.c - aeb - 940501 - Disallocate virtual terminal(s)
  * Renamed deallocvt.
  */
+#include "internal.h"
 #include <stdlib.h>
 #include <fcntl.h>
 #include <sys/types.h>
index a8feeb53c90d1ac8e4b4cd336c3345d50393687c..ae4dbb5a8cc93f4d288f9f983cf0b78d6fa88b28 100644 (file)
@@ -2,6 +2,7 @@
  * disalloc.c - aeb - 940501 - Disallocate virtual terminal(s)
  * Renamed deallocvt.
  */
+#include "internal.h"
 #include <stdlib.h>
 #include <fcntl.h>
 #include <sys/types.h>
diff --git a/editors/sed.c b/editors/sed.c
new file mode 100644 (file)
index 0000000..4dd552a
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Mini sed implementation for busybox
+ *
+ *
+ * Copyright (C) 1999 by Lineo, inc.
+ * Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "internal.h"
+#include "regexp.h"
+#include <stdio.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <time.h>
+#include <ctype.h>
+
+static const char sed_usage[] = 
+"sed [-n] [-e script] [file...]\n"
+"Allowed scripts come in two forms:\n"
+"'/regexp/[gp]'\n"
+"\tattempt to match regexp against the pattern space\n"
+"'s/regexp/replacement/[gp]'\n"
+"\tattempt to match regexp against the pattern space\n"
+"\tand if successful replaces the matched portion with replacement."
+"Options:\n"
+"-e\tadd the script to the commands to be executed\n"
+"-n\tsuppress automatic printing of pattern space\n\n"
+#if defined BB_REGEXP
+"This version of sed matches full regexps.\n";
+#else
+"This version of sed matches strings (not full regexps).\n";
+#endif
+
+
+static int replaceFlag = FALSE;
+static int noprintFlag = FALSE;
+
+
+extern int sed_main (int argc, char **argv)
+{
+    FILE *fp;
+    const char *needle;
+    const char *name;
+    const char *cp;
+    int tellName=TRUE;
+    int ignoreCase=FALSE;
+    int tellLine=FALSE;
+    long line;
+    char haystack[BUF_SIZE];
+
+    ignoreCase = FALSE;
+    tellLine = FALSE;
+
+    argc--;
+    argv++;
+    if (argc < 1) {
+       usage(grep_usage);
+    }
+
+    if (**argv == '-') {
+       argc--;
+       cp = *argv++;
+
+       while (*++cp)
+           switch (*cp) {
+           case 'n':
+               noprintFlag = TRUE;
+               break;
+           case 'e':
+               if (*(*argv)+1 != '\'' && **argv != '\"') {
+                   if (--argc == 0)
+                       usage( mkdir_usage);
+                   ++argv;
+                   if (*(*argv)+1 != '\'' && **argv != '\"') {
+                       usage( mkdir_usage);
+               }
+               /* Find the specified modes */
+               mode = 0;
+               if ( parse_mode(*(++argv), &mode) == FALSE ) {
+                   fprintf(stderr, "Unknown mode: %s\n", *argv);
+                   exit( FALSE);
+               }
+               break;
+
+           default:
+               usage(grep_usage);
+           }
+    }
+
+    needle = *argv++;
+    argc--;
+
+    while (argc-- > 0) {
+       name = *argv++;
+
+       fp = fopen (name, "r");
+       if (fp == NULL) {
+           perror (name);
+           continue;
+       }
+
+       line = 0;
+
+       while (fgets (haystack, sizeof (haystack), fp)) {
+           line++;
+           cp = &haystack[strlen (haystack) - 1];
+
+           if (*cp != '\n')
+               fprintf (stderr, "%s: Line too long\n", name);
+
+           if (find_match(haystack, needle, ignoreCase) == TRUE) {
+               if (tellName==TRUE)
+                   printf ("%s: ", name);
+
+               if (tellLine==TRUE)
+                   printf ("%ld: ", line);
+
+               fputs (haystack, stdout);
+           }
+       }
+
+       if (ferror (fp))
+           perror (name);
+
+       fclose (fp);
+    }
+    exit( TRUE);
+}
+
+
+/* END CODE */
+
+
diff --git a/find.c b/find.c
index c154cf4e784a6923552838e9ba12a313bf94efb1..ab9ebf43476350fc82d7d5a55a79d964feb710c3 100644 (file)
--- a/find.c
+++ b/find.c
@@ -42,34 +42,11 @@ static int fileAction(const char *fileName, struct stat* statbuf)
 {
     if (pattern==NULL)
        fprintf(stdout, "%s\n", fileName);
-    else if (find_match(fileName, pattern, TRUE) == TRUE)
+    else if (find_match((char*)fileName, pattern, TRUE) == TRUE)
        fprintf(stdout, "%s\n", fileName);
     return( TRUE);
 }
 
-static int dirAction(const char *fileName, struct stat* statbuf)
-{
-    DIR *dir;
-    struct dirent *entry;
-    
-    if (pattern==NULL)
-       fprintf(stdout, "%s\n", fileName);
-    else if (find_match(fileName, pattern, TRUE) == TRUE)
-       fprintf(stdout, "%s\n", fileName);
-
-    dir = opendir( fileName);
-    if (!dir) {
-       perror("Can't open directory");
-       exit(FALSE);
-    }
-    while ((entry = readdir(dir)) != NULL) {
-       char dirName[NAME_MAX];
-       sprintf(dirName, "%s/%s", fileName, entry->d_name);
-       recursiveAction( dirName, TRUE, dereferenceFlag, FALSE, fileAction, dirAction);
-    }
-    return( TRUE);
-}
-
 int find_main(int argc, char **argv)
 {
     /* peel off the "find" */
index c154cf4e784a6923552838e9ba12a313bf94efb1..ab9ebf43476350fc82d7d5a55a79d964feb710c3 100644 (file)
@@ -42,34 +42,11 @@ static int fileAction(const char *fileName, struct stat* statbuf)
 {
     if (pattern==NULL)
        fprintf(stdout, "%s\n", fileName);
-    else if (find_match(fileName, pattern, TRUE) == TRUE)
+    else if (find_match((char*)fileName, pattern, TRUE) == TRUE)
        fprintf(stdout, "%s\n", fileName);
     return( TRUE);
 }
 
-static int dirAction(const char *fileName, struct stat* statbuf)
-{
-    DIR *dir;
-    struct dirent *entry;
-    
-    if (pattern==NULL)
-       fprintf(stdout, "%s\n", fileName);
-    else if (find_match(fileName, pattern, TRUE) == TRUE)
-       fprintf(stdout, "%s\n", fileName);
-
-    dir = opendir( fileName);
-    if (!dir) {
-       perror("Can't open directory");
-       exit(FALSE);
-    }
-    while ((entry = readdir(dir)) != NULL) {
-       char dirName[NAME_MAX];
-       sprintf(dirName, "%s/%s", fileName, entry->d_name);
-       recursiveAction( dirName, TRUE, dereferenceFlag, FALSE, fileAction, dirAction);
-    }
-    return( TRUE);
-}
-
 int find_main(int argc, char **argv)
 {
     /* peel off the "find" */
index 44ca028345380fb79776de87a9eddbecf7fb7819..9495bf85824706963b030b68e6ba674d610f55a0 100644 (file)
@@ -47,9 +47,9 @@ static const char grep_usage[] =
 extern int grep_main (int argc, char **argv)
 {
     FILE *fp;
-    const char *needle;
-    const char *name;
-    const char *cp;
+    char *needle;
+    char *name;
+    char *cp;
     int tellName=TRUE;
     int ignoreCase=FALSE;
     int tellLine=FALSE;
diff --git a/grep.c b/grep.c
index 44ca028345380fb79776de87a9eddbecf7fb7819..9495bf85824706963b030b68e6ba674d610f55a0 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -47,9 +47,9 @@ static const char grep_usage[] =
 extern int grep_main (int argc, char **argv)
 {
     FILE *fp;
-    const char *needle;
-    const char *name;
-    const char *cp;
+    char *needle;
+    char *name;
+    char *cp;
     int tellName=TRUE;
     int ignoreCase=FALSE;
     int tellLine=FALSE;
diff --git a/sed.c b/sed.c
new file mode 100644 (file)
index 0000000..4dd552a
--- /dev/null
+++ b/sed.c
@@ -0,0 +1,150 @@
+/*
+ * Mini sed implementation for busybox
+ *
+ *
+ * Copyright (C) 1999 by Lineo, inc.
+ * Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "internal.h"
+#include "regexp.h"
+#include <stdio.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <time.h>
+#include <ctype.h>
+
+static const char sed_usage[] = 
+"sed [-n] [-e script] [file...]\n"
+"Allowed scripts come in two forms:\n"
+"'/regexp/[gp]'\n"
+"\tattempt to match regexp against the pattern space\n"
+"'s/regexp/replacement/[gp]'\n"
+"\tattempt to match regexp against the pattern space\n"
+"\tand if successful replaces the matched portion with replacement."
+"Options:\n"
+"-e\tadd the script to the commands to be executed\n"
+"-n\tsuppress automatic printing of pattern space\n\n"
+#if defined BB_REGEXP
+"This version of sed matches full regexps.\n";
+#else
+"This version of sed matches strings (not full regexps).\n";
+#endif
+
+
+static int replaceFlag = FALSE;
+static int noprintFlag = FALSE;
+
+
+extern int sed_main (int argc, char **argv)
+{
+    FILE *fp;
+    const char *needle;
+    const char *name;
+    const char *cp;
+    int tellName=TRUE;
+    int ignoreCase=FALSE;
+    int tellLine=FALSE;
+    long line;
+    char haystack[BUF_SIZE];
+
+    ignoreCase = FALSE;
+    tellLine = FALSE;
+
+    argc--;
+    argv++;
+    if (argc < 1) {
+       usage(grep_usage);
+    }
+
+    if (**argv == '-') {
+       argc--;
+       cp = *argv++;
+
+       while (*++cp)
+           switch (*cp) {
+           case 'n':
+               noprintFlag = TRUE;
+               break;
+           case 'e':
+               if (*(*argv)+1 != '\'' && **argv != '\"') {
+                   if (--argc == 0)
+                       usage( mkdir_usage);
+                   ++argv;
+                   if (*(*argv)+1 != '\'' && **argv != '\"') {
+                       usage( mkdir_usage);
+               }
+               /* Find the specified modes */
+               mode = 0;
+               if ( parse_mode(*(++argv), &mode) == FALSE ) {
+                   fprintf(stderr, "Unknown mode: %s\n", *argv);
+                   exit( FALSE);
+               }
+               break;
+
+           default:
+               usage(grep_usage);
+           }
+    }
+
+    needle = *argv++;
+    argc--;
+
+    while (argc-- > 0) {
+       name = *argv++;
+
+       fp = fopen (name, "r");
+       if (fp == NULL) {
+           perror (name);
+           continue;
+       }
+
+       line = 0;
+
+       while (fgets (haystack, sizeof (haystack), fp)) {
+           line++;
+           cp = &haystack[strlen (haystack) - 1];
+
+           if (*cp != '\n')
+               fprintf (stderr, "%s: Line too long\n", name);
+
+           if (find_match(haystack, needle, ignoreCase) == TRUE) {
+               if (tellName==TRUE)
+                   printf ("%s: ", name);
+
+               if (tellLine==TRUE)
+                   printf ("%ld: ", line);
+
+               fputs (haystack, stdout);
+           }
+       }
+
+       if (ferror (fp))
+           perror (name);
+
+       fclose (fp);
+    }
+    exit( TRUE);
+}
+
+
+/* END CODE */
+
+