В настоящее время у меня есть некоторый код как (сжатый, и удалил набор проверки ошибок):
dp = readdir(dir);
if (dp->d_type == DT_DIR) {
}
Это работает без помех над моей машиной Linux. Однако на другой машине (похож на SunOS, sparc):
SunOS HOST 5.10 Generic_127127-11 sun4u sparc SUNW,Ultra-5_10
Я получаю следующую ошибку во время компиляции:
error: structure has no member named `d_type'
error: `DT_DIR' undeclared (first use in this function)
Я думал dirent.h
заголовок был межплатформенным (для машин POSIX). Любые предложения.
Маловероятно, что это будет работать в ASE без поддержки AlertManager. Лучше всего подать запрос на функцию и дождаться его. Или, если вы чувствуете себя амбициозным, расширьте ASE самостоятельно и отправьте патч!
-121--2618096-Кто-то включил крючок в удаленном репо, который запрещает удаление - это обычно делается для того, чтобы кто-то не мог протолкнуть ребазированную ветвь в репо. (Я поддерживаю довольно большую коллекцию репозиториев git, и все они сконфигурированы таким образом, хотя и не с крючком.)
Посмотрите на крючки/каталог в удаленном репозитории. Будет сценарий с именем «update»; это то, что отказывается позволить вам удалить ветвь.
-121--2797415-Ссылка http://www.nexenta.org/os/Porting_Codefixes :
Определение грязи структуры в solaris не содержит поля
d _ type
. Необходимо внести следующие изменения
if (de->d_type == DT_DIR)
{
return 0;
}
в
struct stat s; /*include sys/stat.h if necessary */
..
..
stat(de->d_name, &s);
if (s.st_mode & S_IFDIR)
{
return 0;
}
. Поскольку stat
также является стандартом POSIX, он должен быть более кроссплатформенным. Однако можно использовать , если (s.st _ mode & S_IFMT) = S_IFDIR)
, чтобы следовать стандарту.