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

Программа SETEATTR


В программе SETEATTR (листинг 18) мы продемонстрируем использование функции SetExtendedFileAttributes() для изменения байта расширенного атрибута файла, путь к которому указывается в качестве параметра при запуске программы.

// =================================================== // Листинг 18. Изменение байта расширенных атрибутов // Файл seteattr\seteattr.cpp // // (C) A. Frolov, 1993 // ===================================================

#include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h>

#define BYTE unsigned char #define WORD unsigned int

extern "C" int GetNetWareShellVersion(char *,char *, char *); extern "C" int SetExtendedFileAttributes(char*, BYTE);

void main(int argc, char *argv[]) {

char MajorVersion=0; char MinorVersion=0; char Revision=0;

BYTE NewExtendedFileattributes; int ccode;

printf("\n*SETEATTR* (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("Укажите путь к каталогу и " "устанавливаемый бит (T или I), " "\nнапример: seteattr sys:users\my.dat T"); return; }

// Параметры должны быть заданы заглавными буквами

strupr(argv[1]); strupr(argv[2]);

// Определяем значение байта расширенных атрибутов

NewExtendedFileattributes = 0x00;

for(int i = 0; argv[2][i] != '\0' ; i++) { switch(argv[2][i]) { case 'T': NewExtendedFileattributes |= 0x10; break; case 'I': NewExtendedFileattributes |= 0x20; break; case '-': NewExtendedFileattributes = 0; break; default: printf("Ошибка в параметрах\n"); return; } }

// Изменяем байт расширенных атрибутов

ccode = SetExtendedFileAttributes(argv[1], NewExtendedFileattributes);

if(!ccode) printf("Байт расширенных атрибутов изменен\n"); else printf("Ошибка %02.2X\n", ccode); }



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