- •Оглавление
- •Введение:
- •Задание:
- •Функциональные клавиши:
- •Используемые системные вызовы и библиотечные функции:
- •Порядок создания библиотеки
- •Directory.H
- •Drawlib.H
- •Описание собственных функций
- •Cхема алгоритма
- •Intmakedir(char*path);
- •Int fcopy (char* path, struct dirent **list, int poskurs, char* othpath);
- •Int positionkurs – положение курсора в списке файлов.
- •Int remdf(char*path);
- •Int cutf(char*path, char*pathD);
- •Void name(char nn[33]);
- •Voidaccesscheck();
- •Voidaccessdev();
- •Void printerror(const char* text);
- •Void printerror(const char* text)
- •Порядок создания собственных библиотек :
- •Результат работы программы
- •Список литературы
Void name(char nn[33]);
Функция переименования. При вызове появляется окно с вводом информации.
Используемые библиотеки: данные функции находятся в файле drawlib.cpp поэтому библиотеки там уже были подключены заранее
Тип возвращаемого значения- void.
Схема алгоритма
Функция переименования:
void name(char nn[33])
{
WINDOW*w;
const char*namewin="Move/Rename";
w=newwin(WLINES,WCOLS,Wy+1,Wx+1);
wrefresh(w);
wattrset(w,COLOR_PAIR(10));
werase(w);
box(w,0,0);
wmove(w,0,(WCOLS-strlen(namewin))/2);
wattrset(w,COLOR_PAIR(12));
wprintw(w," %s ",namewin);
wattrset(w,COLOR_PAIR(10));
for(int i=1;i<=(WCOLS-2);i++)
for(int j=1;j<=(WCOLS-2);j++)
mvwaddstr(w,j,i," ");
mvwaddstr(w,WLINES/2-2,(WCOLS-16)/2,"Input new name");
wattrset(w,COLOR_PAIR(10));
mvwaddstr(w,WLINES/2+2,(WCOLS-2)/2,"OK");
wattrset(w,COLOR_PAIR(4));
for(int i=3;i<=(WCOLS-4);i++)
mvwaddstr(w,WLINES/2,i," ");
wmove(w,WLINES/2,3);
echo();
curs_set(1);
wgetstr(w,nn);
noecho();
curs_set(0);
delwin(w);
}
Функция полной информации об объекте:
Voidaccesscheck();
Функция краткой информации об объектах:
Voidaccessdev();
Эти две функции показывают информацию об объектах.
Используемые библиотеки: данные функции находятся в файле drawlib.cpp поэтому библиотеки там уже были подключены заранее
Тип возвращаемого значения- void.
Функция полной информации об объекте:
void accesscheck() // функция преобразования переменной mode_t в формат -rwxrwxrwx
{struct stat buf;//структура со сведениями о файле
mode_t newmode; //переменная для изменения прав доступа
if (!(buf.st_mode & S_IRUSR)) printw ("-");
else printw ("r");
if (!(buf.st_mode & S_IWUSR)) printw ("-");
else printw ("w");
if (!(buf.st_mode & S_IXUSR)) printw ("-");
else printw ("x");
if (!(buf.st_mode & S_IRGRP)) printw ("-");
else printw ("r");
if (!(buf.st_mode & S_IWGRP)) printw ("-");
else printw ("w");
if (!(buf.st_mode & S_IXGRP)) printw ("-");
else printw ("x");
if (!(buf.st_mode & S_IROTH)) printw ("-");
else printw ("r");
if (!(buf.st_mode & S_IWOTH)) printw ("-");
else printw ("w");
if (!(buf.st_mode & S_IXOTH)) printw ("-");
else printw ("x");
printw("Uid:%d ",buf.st_uid);
printw("Gid:%d ",buf.st_gid);
printw("Inode:%d ",buf.st_ino);
printw("Dev id:%d ",buf.st_dev);
}
Функция краткой информации об объектах:
void accessdev()
{struct stat buf;//структура со сведениями о файле
mode_t newmode; //переменная для изменения прав доступа
if (S_ISBLK(buf.st_mode)) printw ("block");
else if (S_ISLNK(buf.st_mode)) printw ("link");
else if (S_ISDIR(buf.st_mode)) printw ("dir");
else if (S_ISSOCK(buf.st_mode)) printw ("soket");
else if (S_ISFIFO(buf.st_mode)) printw ("FIFO");
else printw ("-");}
Функция выдачи окна с ошибкой:
Void printerror(const char* text);
Функция выводит окно с ошибкой.
Используемые библиотеки: данные функции находятся в файле drawlib.cpp поэтому библиотеки там уже были подключены заранее
Тип возвращаемого значения- void.
Функция выдачи окна с ошибкой:
Void printerror(const char* text)
{
WINDOW *w;
beep();
w = newwin( WLINES, WCOLS, Wy+1, Wx+1);
noecho();
curs_set(0);
wrefresh(w);
wattrset(w,A_BOLD|COLOR_PAIR(8));
werase(w);
box(w,0,0);
wmove(w,0,(WCOLS-8)/2);
wattrset(w,A_BOLD|COLOR_PAIR(9));
wprintw( w, " ERROR " );
wattrset(w,A_BOLD|COLOR_PAIR(7));
for (int i=1;i<=WCOLS-2;i++)
for (int j=1;j<=WLINES-2;j++)
{
mvwaddstr(w,j,i," ");
}
wrefresh(w);//отобразить stdscr
wattrset(w, A_BOLD|COLOR_PAIR(8));
mvwaddstr(w,WLINES/2-1,(WCOLS-strlen(text))/2, text);
wattrset(w,A_BOLD|A_UNDERLINE|COLOR_PAIR(9));
mvwaddstr(w,WLINES/2+1,(WCOLS-2)/2, "OK");
wrefresh(w);
keypad( w, TRUE );
while (1)
{
switch (wgetch(w))
{
case KEY_ESC:
case 10: goto out;
} }
out:
delwin(w);
refresh();
}