Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проектирование экзоскелета. Монография

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]