Локальные сети персональных компьютеров. Работа с сервером Novell NetWare


Листинг 19



Листинг 19

Копирование файлов, расположенных на файл-сервере // Файл fcopy\fcopy.cpp // // (C) A. Frolov, 1993 // ============================================================= #include <stdlib.h> #include <stdio.h> #include <string.h> #include <fcntl.h> #include <io.h> #include <sys\stat.h> extern "C" int GetNetWareShellVersion(char *,char *, char *); extern "C" int FileServerFileCopy(int, int, long, long, long, long*); void main(int argc, char *argv[]) { char MajorVersion=0; char MinorVersion=0; char Revision=0; int FromHandle; int ToHandle; long BytesCopied; int ccode; printf("\n*FCOPY* (C) Frolov A., 1993\n"); // Проверяем наличие сетевой оболочки asm push si GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision); asm pop si if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n"); return; } // Необходимо задать путь к каталогу, удаляемые // и добавляемые права доступа if(argc < 3) { printf("Укажите пути к копируемым файлам, " "\nнапример: fcopy f:\users\my.dat f:\us\my.dat"); return; } // Параметры должны быть заданы заглавными буквами strupr(argv[1]); strupr(argv[2]); // Открываем входной файл в двоичном режиме для чтения if ((FromHandle = open(argv[1], O_RDONLY | O_BINARY)) == -1) { printf("Не могу открыть исходный файл\n"); return; } // Открываем выходной файл в двоичном режиме для чтения // и записи, разрешаем создание файла, если его еще нет, // разрешаем запись в файл if ((ToHandle = open(argv[2], O_CREAT | O_RDWR | O_BINARY, S_IWRITE)) == -1) { printf("Не могу открыть выходной файл\n"); return; } // Копируем файл, длину файла определяем при помощи // функции filelength() ccode = FileServerFileCopy(FromHandle, ToHandle, 0, 0, filelength(FromHandle), &BytesCopied); if(!ccode) printf("Файл скопирован\n"); else printf("Ошибка %02.2X\n", ccode); // Закрываем файлы close(FromHandle); close(ToHandle); }







Начало  Назад  Вперед