Author: hbelusca
Date: Sun Mar 29 00:13:25 2015
New Revision: 66942
URL:
http://svn.reactos.org/svn/reactos?rev=66942&view=rev
Log:
[ROSAPPS][HOST-TOOLS]:
- Take the best of the two CAT rosapps and turn them into a host-tool. Will be used later
on in the build process.
- Few comment cleaning in bin2c tool.
Added:
trunk/reactos/tools/cat.c
- copied, changed from r66923, trunk/rosapps/applications/sysutils/utils/cat/cat.c
Removed:
trunk/rosapps/applications/sysutils/tcat/
trunk/rosapps/applications/sysutils/utils/cat/
Modified:
trunk/reactos/CMakeLists.txt
trunk/reactos/tools/CMakeLists.txt
trunk/reactos/tools/bin2c.c
trunk/rosapps/applications/sysutils/CMakeLists.txt
trunk/rosapps/applications/sysutils/utils/CMakeLists.txt
Modified: trunk/reactos/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/CMakeLists.txt?rev=66942&a…
==============================================================================
--- trunk/reactos/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/CMakeLists.txt [iso-8859-1] Sun Mar 29 00:13:25 2015
@@ -85,9 +85,9 @@
add_subdirectory(lib)
if(NOT MSVC)
- export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc
rsym mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE
native- )
- else()
- export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc
mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
+ export(TARGETS bin2c cat widl gendib cabman cdmake mkhive obj2bin spec2def geninc
rsym mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE
native- )
+ else()
+ export(TARGETS bin2c cat widl gendib cabman cdmake mkhive obj2bin spec2def geninc
mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
endif()
else()
Modified: trunk/reactos/tools/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/CMakeLists.txt?rev=6…
==============================================================================
--- trunk/reactos/tools/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/tools/CMakeLists.txt [iso-8859-1] Sun Mar 29 00:13:25 2015
@@ -6,6 +6,7 @@
endif()
add_executable(bin2c bin2c.c)
+add_executable(cat cat.c)
add_executable(gendib gendib/gendib.c)
add_executable(geninc geninc/geninc.c)
add_executable(mkshelllink mkshelllink/mkshelllink.c)
Modified: trunk/reactos/tools/bin2c.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/bin2c.c?rev=66942&am…
==============================================================================
--- trunk/reactos/tools/bin2c.c [iso-8859-1] (original)
+++ trunk/reactos/tools/bin2c.c [iso-8859-1] Sun Mar 29 00:13:25 2015
@@ -16,18 +16,14 @@
unsigned char ch;
unsigned char cnt;
- /*
- * Validate the arguments.
- */
+ /* Validate the arguments */
if (argc < 5)
{
printf("Usage: bin2c infile.bin outfile.c outfile.h array_name
[array_attribute [header_for_attribute]]\n");
return -1;
}
- /*
- * Open the input and the output files.
- */
+ /* Open the input and output files */
inFile = fopen(argv[1], "rb");
if (!inFile)
{
@@ -50,9 +46,7 @@
return -1;
}
- /*
- * Generate the header file and close it.
- */
+ /* Generate the header file and close it */
fprintf(outHFile, "/* This file is autogenerated, do not edit. */\n\n");
fprintf(outHFile, "#ifndef CHAR\n"
"#define CHAR char\n"
@@ -60,21 +54,19 @@
fprintf(outHFile, "extern CHAR %s[];\n", argv[4]);
fclose(outHFile);
- /*
- * Generate the source file and close it.
- */
+ /* Generate the source file and close it */
fprintf(outCFile, "/* This file is autogenerated, do not edit. */\n\n");
if (argc >= 7)
{
- /* There is a header to be included for defining the array attribute. */
+ /* Include needed header for defining the array attribute */
fprintf(outCFile, "#include \"%s\"\n", argv[6]);
}
fprintf(outCFile, "#include \"%s\"\n\n", argv[3]);
- /* Generate the array. */
+ /* Generate the data array */
if (argc >= 6)
{
- /* There is an array attribute. */
+ /* Add the array attribute */
fprintf(outCFile, "%s ", argv[5]);
}
fprintf(outCFile, "CHAR %s[] =\n{", argv[4]);
@@ -92,12 +84,12 @@
++cnt;
ch = fgetc(inFile);
}
- /* Put a final NULL terminator. */
+ /* Put a final NULL terminator */
fprintf(outCFile, "\n 0x00");
fprintf(outCFile, "\n};\n");
fclose(outCFile);
- /* Close the input file. */
+ /* Close the input file */
fclose(inFile);
return 0;
Copied: trunk/reactos/tools/cat.c (from r66923,
trunk/rosapps/applications/sysutils/utils/cat/cat.c)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/cat.c?p2=trunk/react…
==============================================================================
--- trunk/rosapps/applications/sysutils/utils/cat/cat.c [iso-8859-1] (original)
+++ trunk/reactos/tools/cat.c [iso-8859-1] Sun Mar 29 00:13:25 2015
@@ -1,26 +1,120 @@
-#include <stdlib.h>
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS conCATenation tool
+ * FILE: tools/cat.c
+ * PURPOSE: Concatenates STDIN or an arbitrary number of files to STDOUT
+ * PROGRAMMERS: David Welch
+ * Semyon Novikov (tappak)
+ * Hermès Bélusca - Maïto
+ */
+
+#include <io.h>
+#include <fcntl.h>
#include <stdio.h>
+
+#define ARRAYSIZE(a) (sizeof(a) / sizeof((a)[0]))
+
+void help(void)
+{
+ printf("\n"
+ "ReactOS File Concatenation Tool\n"
+ "\n"
+ "Usage: cat [options] [file [...]]\n"
+ "options - Currently ignored\n");
+}
int main(int argc, char* argv[])
{
- int i;
- FILE* in;
- char ch;
+ int i;
+ FILE* in;
+ unsigned char buff[512];
+ size_t cnt, readcnt;
- for (i=1; i<argc; i++)
- {
- in = fopen(argv[i],"r");
- if (in == NULL)
- {
- printf("Failed to open file %s\n", argv[i]);
- return(0);
- }
+ if (argc >= 2)
+ {
+ if (stricmp(argv[1], "-h" ) == 0 ||
+ stricmp(argv[1], "--help") == 0 ||
+ stricmp(argv[1], "/?" ) == 0 ||
+ stricmp(argv[1], "/help" ) == 0)
+ {
+ help();
+ return 0;
+ }
+ }
- while ((ch = fgetc(in)) != EOF)
- {
- putchar(ch);
- }
- fclose(in);
- }
- return 0;
+ /* Set STDOUT to binary */
+ setmode(fileno(stdout), O_BINARY);
+
+ /* Special case where we run 'cat' without any argument: we use STDIN */
+ if (argc <= 1)
+ {
+ unsigned int ch;
+
+ /* Set STDIN to binary */
+ setmode(fileno(stdin), O_BINARY);
+
+#if 0 // Version using feof()
+ ch = fgetc(stdin);
+ while (!feof(stdin))
+ {
+ putchar(ch);
+ ch = fgetc(stdin);
+ }
+#else
+ while ((ch = fgetc(stdin)) != EOF)
+ {
+ putchar(ch);
+ }
+#endif
+
+ return 0;
+ }
+
+ /* We have files: read them and output them to STDOUT */
+ for (i = 1; i < argc; i++)
+ {
+ /* Open the file in binary read mode */
+ in = fopen(argv[i], "rb");
+ if (in == NULL)
+ {
+ printf("Failed to open file '%s'\n", argv[i]);
+ return -1;
+ }
+
+ /* Dump the file to STDOUT */
+ cnt = 0; readcnt = 0;
+ while (readcnt == cnt)
+ {
+ /* Read data from the input file */
+ cnt = ARRAYSIZE(buff);
+ readcnt = fread(&buff, sizeof(buff[0]), cnt, in);
+ if (readcnt != cnt)
+ {
+ /*
+ * The real number of read bytes differs from the number of bytes
+ * we wanted to read, so either a reading error occurred, or EOF
+ * was reached while reading. Bail out if it is a reading error.
+ */
+ if (!feof(in))
+ {
+ printf("Error while reading file '%s'\n",
argv[i]);
+ fclose(in);
+ return -1;
+ }
+ }
+
+ /* Nothing to be read anymore, so we can gracefully break */
+ if (readcnt == 0) break;
+
+ /* Write data to STDOUT */
+ fwrite(&buff, sizeof(buff[0]), readcnt, stdout);
+ }
+
+ /* Finally close the file */
+ fclose(in);
+ }
+
+ return 0;
}
+
+/* EOF */
Modified: trunk/rosapps/applications/sysutils/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/sysutils/CMak…
==============================================================================
--- trunk/rosapps/applications/sysutils/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rosapps/applications/sysutils/CMakeLists.txt [iso-8859-1] Sun Mar 29 00:13:25
2015
@@ -12,6 +12,5 @@
#add_subdirectory(rosddt)
#add_subdirectory(screenshot)
#add_subdirectory(systeminfo)
-#add_subdirectory(tcat)
add_subdirectory(tlist)
add_subdirectory(utils)
Modified: trunk/rosapps/applications/sysutils/utils/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/sysutils/util…
==============================================================================
--- trunk/rosapps/applications/sysutils/utils/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rosapps/applications/sysutils/utils/CMakeLists.txt [iso-8859-1] Sun Mar 29
00:13:25 2015
@@ -1,5 +1,4 @@
#add_subdirectory(binpatch)
-add_subdirectory(cat)
#add_subdirectory(driver)
#add_subdirectory(infinst)
#add_subdirectory(nts2w32err)