Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Проектирование экзоскелета. Монография
.pdf
211
current->fd=malloc(TABINC*sizeof(struct fenris_fd));
current->fdtop=TABINC;
}
while (current->fdtop<=fd) {
current->fdtop+=TABINC;
current->fd=realloc(current->fd,current->fdtop*sizeof(struct
fenris_fd));
}
(*current->fd)[fd].special=0;
(*current->fd)[fd].name=strdup(fname);
snprintf(tmpbuf,MAXDESCR,"origin unknown");
(*current->fd)[fd].descr=strdup(tmpbuf);
(*current->fd)[fd].p=0;
}
/**********************
* Duplicate filedes. *
**********************/
static void dup_filedes(const int old,const int fd,char* who) {
char tmpbuf[MAXDESCR];
if (current->fdtop<=old) fatal("dup_filedes with excessive fd",0);
if (old<0 || fd<0) fatal("dup_filedes with excessive fd",0);
while (current->fdtop<=fd) {

212
current->fdtop+=TABINC;
current->fd=realloc(current->fd,current->fdtop*sizeof(struct
fenris_fd));
}
if ((*current->fd)[fd].name) {
RD(); Xf(fd); DD();
remove_filedes(fd);
}
if (!(*current->fd)[old].name) (*current-
>fd)[fd].name=strdup("<unknown>");
else (*current->fd)[fd].name=strdup((*current->fd)[old].name);
snprintf(tmpbuf,MAXDESCR,"cloned in %s",who);
(*current->fd)[fd].descr=strdup(tmpbuf);
(*current->fd)[fd].p=(*current->fd)[old].p;
if (current->nest>=-1 && !T_nodesc) {
indent(0);
debug("@ new duplicate fd %d from %d (%s)\n",fd,old,(*current-
>fd)[fd].name);
}
}
/*****************************
* Remove item from fd table *
*****************************/
static void remove_filedes(const int fd) {

213
if ((fd>=0) && (fd<current->fdtop) && (*current->fd)[fd].name) {
if (current->nest>=-1 && !T_nodesc) {
indent(0);
debug("@ removed fd %d (%s)\n",fd,(*current->fd)[fd].name);
}
free((*current->fd)[fd].name);
free((*current->fd)[fd].descr);
(*current->fd)[fd].name=0;
(*current->fd)[fd].descr=0;
}
}
/***********************
* Change filedes info *
***********************/
static void modify_filedes(const int fd,const char* newt, int newp) {
if ((fd>=0) && (fd<current->fdtop) && (*current->fd)[fd].name) {
if (newt) {
free((*current->fd)[fd].name);
(*current->fd)[fd].name=strdup(newt);
}
if (newp) (*current->fd)[fd].p=newp;
}
}

214
/***************************
* Get .p parameter (port) *
***************************/
static int get_filep(const int fd) {
if ((fd>=0) && (fd<current->fdtop) && (*current->fd)[fd].name)
return (*current->fd)[fd].p;
return 0;
}


Научное издание
Малюга Олег Владимирович
Проектирование экзоскелета
Монография
Публикуется в авторской редакции
Рассылка обязательных экземпляров осуществлена в соответствии с
действующими нормативными актами
Подписано в печать 22.04.2019г. Формат 60х84/16.
Тираж 1105.
Ай Пи Ар Медиа
Саратов, Россия
2019
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
