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

       

Программа FCOPY


Программа FCOPY (листинг 19) демонстрирует использование функции FileServerFileCopy(). При запуске этой программе необходимо в качестве параметров указать пути к входному и выходному файлам.

// ============================================================= // Листинг 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); }



Содержание раздела