mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 02:25:17 +00:00
2003-05-25 Casper S. Hornstrup <chorns@users.sourceforge.net>
* Makefile: Don't install system.hiv. Install fonts and nls directory. * tools/rcopy.c (copy_file, copy_directory, is_directory): New functions. svn path=/trunk/; revision=4752
This commit is contained in:
parent
ca127f5069
commit
419b1c5759
3 changed files with 244 additions and 42 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2003-05-25 Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||||
|
|
||||||
|
* Makefile: Don't install system.hiv. Install fonts and nls directory.
|
||||||
|
* tools/rcopy.c (copy_file, copy_directory, is_directory): New functions.
|
||||||
|
|
||||||
2003-05-17 Casper S. Hornstrup <chorns@users.sourceforge.net>
|
2003-05-17 Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||||
|
|
||||||
* ntoskrnl/io/irp.c (IofCallDriver): Don't reference FileObject.
|
* ntoskrnl/io/irp.c (IofCallDriver): Don't reference FileObject.
|
||||||
|
|
|
@ -748,19 +748,8 @@ install_before:
|
||||||
$(RLINE) bootdata/hivesft.inf $(INSTALL_DIR)/hivesft.inf
|
$(RLINE) bootdata/hivesft.inf $(INSTALL_DIR)/hivesft.inf
|
||||||
$(RLINE) bootdata/hivesys.inf $(INSTALL_DIR)/hivesys.inf
|
$(RLINE) bootdata/hivesys.inf $(INSTALL_DIR)/hivesys.inf
|
||||||
$(RLINE) bootdata/txtsetup.sif $(INSTALL_DIR)/txtsetup.sif
|
$(RLINE) bootdata/txtsetup.sif $(INSTALL_DIR)/txtsetup.sif
|
||||||
$(CP) system.hiv $(INSTALL_DIR)/system.hiv
|
$(CP) media/fonts $(INSTALL_DIR)
|
||||||
$(CP) media/fonts/helb____.ttf $(INSTALL_DIR)/helb____.ttf
|
$(CP) media/nls $(INSTALL_DIR)
|
||||||
$(CP) media/fonts/timr____.ttf $(INSTALL_DIR)/timr____.ttf
|
|
||||||
$(CP) media/fonts/Vera.ttf $(INSTALL_DIR)/Vera.ttf
|
|
||||||
$(CP) media/fonts/VeraBd.ttf $(INSTALL_DIR)/VeraBd.ttf
|
|
||||||
$(CP) media/fonts/VeraBI.ttf $(INSTALL_DIR)/VeraBI.ttf
|
|
||||||
$(CP) media/fonts/VeraIt.ttf $(INSTALL_DIR)/VeraIt.ttf
|
|
||||||
$(CP) media/fonts/VeraMoBd.ttf $(INSTALL_DIR)/VeraMoBd.ttf
|
|
||||||
$(CP) media/fonts/VeraMoBI.ttf $(INSTALL_DIR)/VeraMoBI.ttf
|
|
||||||
$(CP) media/fonts/VeraMoIt.ttf $(INSTALL_DIR)/VeraMoIt.ttf
|
|
||||||
$(CP) media/fonts/VeraMono.ttf $(INSTALL_DIR)/VeraMono.ttf
|
|
||||||
$(CP) media/fonts/VeraSe.ttf $(INSTALL_DIR)/VeraSe.ttf
|
|
||||||
$(CP) media/fonts/VeraSeBd.ttf $(INSTALL_DIR)/VeraSeBd.ttf
|
|
||||||
|
|
||||||
else # BOOTCD_INSTALL
|
else # BOOTCD_INSTALL
|
||||||
|
|
||||||
|
@ -778,19 +767,11 @@ install_before:
|
||||||
$(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
|
$(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
|
||||||
$(CP) boot.bat $(INSTALL_DIR)/boot.bat
|
$(CP) boot.bat $(INSTALL_DIR)/boot.bat
|
||||||
$(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
|
$(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
|
||||||
$(CP) system.hiv $(INSTALL_DIR)/system32/config/system.hiv
|
$(CP) media/fonts $(INSTALL_DIR)/media/fonts
|
||||||
$(CP) media/fonts/helb____.ttf $(INSTALL_DIR)/media/fonts/helb____.ttf
|
$(CP) media/nls $(INSTALL_DIR)/system32
|
||||||
$(CP) media/fonts/timr____.ttf $(INSTALL_DIR)/media/fonts/timr____.ttf
|
$(CP) media/nls/c_1252.nls $(INSTALL_DIR)/system32/ansi.nls
|
||||||
$(CP) media/fonts/Vera.ttf $(INSTALL_DIR)/media/fonts/Vera.ttf
|
$(CP) media/nls/c_437.nls $(INSTALL_DIR)/system32/oem.nls
|
||||||
$(CP) media/fonts/VeraBd.ttf $(INSTALL_DIR)/media/fonts/VeraBd.ttf
|
$(CP) media/nls/l_intl.nls $(INSTALL_DIR)/system32/casemap.nls
|
||||||
$(CP) media/fonts/VeraBI.ttf $(INSTALL_DIR)/media/fonts/VeraBI.ttf
|
|
||||||
$(CP) media/fonts/VeraIt.ttf $(INSTALL_DIR)/media/fonts/VeraIt.ttf
|
|
||||||
$(CP) media/fonts/VeraMoBd.ttf $(INSTALL_DIR)/media/fonts/VeraMoBd.ttf
|
|
||||||
$(CP) media/fonts/VeraMoBI.ttf $(INSTALL_DIR)/media/fonts/VeraMoBI.ttf
|
|
||||||
$(CP) media/fonts/VeraMoIt.ttf $(INSTALL_DIR)/media/fonts/VeraMoIt.ttf
|
|
||||||
$(CP) media/fonts/VeraMono.ttf $(INSTALL_DIR)/media/fonts/VeraMono.ttf
|
|
||||||
$(CP) media/fonts/VeraSe.ttf $(INSTALL_DIR)/media/fonts/VeraSe.ttf
|
|
||||||
$(CP) media/fonts/VeraSeBd.ttf $(INSTALL_DIR)/media/fonts/VeraSeBd.ttf
|
|
||||||
|
|
||||||
endif # BOOTCD_INSTALL
|
endif # BOOTCD_INSTALL
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,26 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <io.h>
|
||||||
|
#include <dos.h>
|
||||||
|
#else
|
||||||
|
#include <sys/io.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#endif
|
||||||
|
#ifndef WIN32
|
||||||
|
#ifndef MAX_PATH
|
||||||
|
#define MAX_PATH 260
|
||||||
|
#endif
|
||||||
|
#define DIR_SEPARATOR_CHAR '/'
|
||||||
|
#define DIR_SEPARATOR_STRING "/"
|
||||||
|
#else
|
||||||
|
#define DIR_SEPARATOR_CHAR '\\'
|
||||||
|
#define DIR_SEPARATOR_STRING "\\"
|
||||||
|
#endif
|
||||||
|
|
||||||
char* convert_path(char* origpath)
|
char* convert_path(char* origpath)
|
||||||
{
|
{
|
||||||
|
@ -32,25 +52,15 @@ char* convert_path(char* origpath)
|
||||||
|
|
||||||
#define TRANSFER_SIZE (65536)
|
#define TRANSFER_SIZE (65536)
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
static void
|
||||||
|
copy_file(char* path1, char* path2)
|
||||||
{
|
{
|
||||||
char* path1;
|
|
||||||
char* path2;
|
|
||||||
FILE* in;
|
FILE* in;
|
||||||
FILE* out;
|
FILE* out;
|
||||||
char* buf;
|
char* buf;
|
||||||
int n_in;
|
int n_in;
|
||||||
int n_out;
|
int n_out;
|
||||||
|
|
||||||
if (argc != 3)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Too many arguments\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
path1 = convert_path(argv[1]);
|
|
||||||
path2 = convert_path(argv[2]);
|
|
||||||
|
|
||||||
in = fopen(path1, "rb");
|
in = fopen(path1, "rb");
|
||||||
if (in == NULL)
|
if (in == NULL)
|
||||||
{
|
{
|
||||||
|
@ -58,8 +68,6 @@ int main(int argc, char* argv[])
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
out = fopen(path2, "wb");
|
out = fopen(path2, "wb");
|
||||||
if (out == NULL)
|
if (out == NULL)
|
||||||
{
|
{
|
||||||
|
@ -69,7 +77,6 @@ int main(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = malloc(TRANSFER_SIZE);
|
buf = malloc(TRANSFER_SIZE);
|
||||||
|
|
||||||
while (!feof(in))
|
while (!feof(in))
|
||||||
{
|
{
|
||||||
n_in = fread(buf, 1, TRANSFER_SIZE, in);
|
n_in = fread(buf, 1, TRANSFER_SIZE, in);
|
||||||
|
@ -83,5 +90,214 @@ int main(int argc, char* argv[])
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
|
||||||
|
static void
|
||||||
|
copy_directory (char *path1, char *path2)
|
||||||
|
{
|
||||||
|
struct _finddata_t f;
|
||||||
|
int findhandle;
|
||||||
|
char buf[MAX_PATH];
|
||||||
|
char tobuf[MAX_PATH];
|
||||||
|
|
||||||
|
strcpy(buf, path1);
|
||||||
|
if (path1[strlen(path1) - 1] != DIR_SEPARATOR_CHAR)
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, "*.*");
|
||||||
|
findhandle =_findfirst(buf, &f);
|
||||||
|
if (findhandle != 0)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ((f.attrib & _A_SUBDIR) == 0 && f.name[0] != '.')
|
||||||
|
{
|
||||||
|
// Check for an absolute path
|
||||||
|
if (path1[0] == DIR_SEPARATOR_CHAR)
|
||||||
|
{
|
||||||
|
strcpy(buf, path1);
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, f.name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getcwd(buf, sizeof(buf));
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, path1);
|
||||||
|
if (path1[strlen(path1) - 1] != DIR_SEPARATOR_CHAR)
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, f.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//printf("copying file %s\n", buf);
|
||||||
|
if (path2[strlen(path2) - 1] == DIR_SEPARATOR_CHAR)
|
||||||
|
{
|
||||||
|
strcpy(tobuf, path2);
|
||||||
|
strcat(tobuf, f.name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy(tobuf, path2);
|
||||||
|
strcat(tobuf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(tobuf, f.name);
|
||||||
|
}
|
||||||
|
copy_file(buf, tobuf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//printf("skipping directory '%s'\n", f.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (_findnext(findhandle, &f) == 0);
|
||||||
|
|
||||||
|
_findclose(findhandle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* Linux version */
|
||||||
|
static void
|
||||||
|
copy_directory (char *path1, char *path2)
|
||||||
|
{
|
||||||
|
DIR *dirp;
|
||||||
|
struct dirent *entry;
|
||||||
|
char *old_end_source;
|
||||||
|
struct stat stbuf;
|
||||||
|
char buf[MAX_PATH];
|
||||||
|
char tobuf[MAX_PATH];
|
||||||
|
char err[400];
|
||||||
|
|
||||||
|
dirp = opendir(path1);
|
||||||
|
|
||||||
|
if (dirp != NULL)
|
||||||
|
{
|
||||||
|
while ((entry = readdir (dirp)) != NULL)
|
||||||
|
{
|
||||||
|
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
|
||||||
|
continue; // skip self and parent
|
||||||
|
|
||||||
|
if (entry->d_type == DT_REG) // normal file
|
||||||
|
{
|
||||||
|
// Check for an absolute path
|
||||||
|
if (path1[0] == DIR_SEPARATOR_CHAR)
|
||||||
|
{
|
||||||
|
strcpy(buf, path1);
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, entry->d_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getcwd(buf, sizeof(buf));
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, path1);
|
||||||
|
if (path1[strlen(path1) - 1] != DIR_SEPARATOR_CHAR)
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, entry->d_name);
|
||||||
|
}
|
||||||
|
if (stat(buf, &stbuf) == -1)
|
||||||
|
{
|
||||||
|
sprintf(err, "Can't access '%s' (%s)\n", buf, strerror(errno));
|
||||||
|
perror(err);
|
||||||
|
exit(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//printf("copying file '%s'\n", entry->d_name);
|
||||||
|
if (path2[strlen(path2) - 1] == DIR_SEPARATOR_CHAR)
|
||||||
|
{
|
||||||
|
strcpy(tobuf, path2);
|
||||||
|
strcat(tobuf, entry->d_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy(tobuf, path2);
|
||||||
|
strcat(tobuf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(tobuf, entry->d_name);
|
||||||
|
}
|
||||||
|
copy_file(buf, tobuf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//printf("skipping directory '%s'\n", entry->d_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir (dirp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(err, "Can't open %s\n", path1);
|
||||||
|
perror(err);
|
||||||
|
exit(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int
|
||||||
|
is_directory(char *path)
|
||||||
|
{
|
||||||
|
struct stat stbuf;
|
||||||
|
char buf[MAX_PATH];
|
||||||
|
char err[400];
|
||||||
|
|
||||||
|
// Check for an absolute path
|
||||||
|
if (path[0] == DIR_SEPARATOR_CHAR)
|
||||||
|
{
|
||||||
|
strcpy(buf, path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getcwd(buf, sizeof(buf));
|
||||||
|
strcat(buf, DIR_SEPARATOR_STRING);
|
||||||
|
strcat(buf, path);
|
||||||
|
}
|
||||||
|
if (stat(buf, &stbuf) == -1)
|
||||||
|
{
|
||||||
|
/* Assume a destination file */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (S_ISDIR(stbuf.st_mode))
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
char* path1;
|
||||||
|
char* path2;
|
||||||
|
int dir1;
|
||||||
|
int dir2;
|
||||||
|
|
||||||
|
if (argc != 3)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Wrong argument count\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
path1 = convert_path(argv[1]);
|
||||||
|
path2 = convert_path(argv[2]);
|
||||||
|
|
||||||
|
dir1 = is_directory(path1);
|
||||||
|
dir2 = is_directory(path2);
|
||||||
|
|
||||||
|
if ((dir1 && !dir2) || (!dir1 && dir2))
|
||||||
|
{
|
||||||
|
perror("None or both paramters must be a directory\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir1)
|
||||||
|
{
|
||||||
|
copy_directory(path1, path2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
copy_file(path1, path2);
|
||||||
|
}
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue