Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Информация о файле 
:(
    Опции темы
T0ohtik
Дата 27.5.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 9.2.2008

Репутация: нет
Всего: 1



Привет. В моей программе надо определить по списку является ли путь папкой или файлом. Для этой цели я использую вызов stat, который возвращает -1. И переменная errno устанавливается в 13 Permisson denied. Права на файл выставлены корректно 777. В чем может скрываться проблема? Какие еще есть способы взять получить информацию о файле?
PM MAIL   Вверх
azesmcar
Дата 27.5.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(T0ohtik @  27.5.2009,  20:34 Найти цитируемый пост)
надо определить по списку является ли путь папкой или файлом

opendir сойдет?
Цитата

Return Value
The opendir() function returns a pointer to the directory stream. On error, NULL is returned, and errno is set appropriately.
Errors

EACCES
    Permission denied. 
EMFILE
    Too many file descriptors in use by process. 
ENFILE
    Too many files are currently open in the system. 
ENOENT
    Directory does not exist, or name is an empty string. 
ENOMEM
    Insufficient memory to complete the operation. 
ENOTDIR
    name is not a directory.




Это сообщение отредактировал(а) azesmcar - 27.5.2009, 20:40
PM   Вверх
MAKCim
Дата 27.5.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(T0ohtik @  27.5.2009,  20:34 Найти цитируемый пост)
Какие еще есть способы взять получить информацию о файле? 

определить, является ли файл каталогом можно через opendir
если возвращает ошибку - значит файл, иначе - каталог
но это не 100%, т. к соответствующая ошибка скорее всего в некоторых случаях может возвращаться при открытии каталога

Добавлено через 58 секунд
Цитата(T0ohtik @  27.5.2009,  20:34 Найти цитируемый пост)
Права на файл выставлены корректно 777

а на каталог, который содержит это файл/каталог?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
T0ohtik
Дата 27.5.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 9.2.2008

Репутация: нет
Всего: 1



Цитата(MAKCim @ 27.5.2009,  20:40)
Цитата(T0ohtik @  27.5.2009,  20:34 Найти цитируемый пост)
Какие еще есть способы взять получить информацию о файле? 

определить, является ли файл каталогом можно через opendir
если возвращает ошибку - значит файл, иначе - каталог
но это не 100%, т. к соответствующая ошибка скорее всего в некоторых случаях может возвращаться при открытии каталога

Добавлено @ 20:41
Цитата(T0ohtik @  27.5.2009,  20:34 Найти цитируемый пост)
Права на файл выставлены корректно 777

а на каталог, который содержит это файл/каталог?

хм, а вот об этом не подумал. Завтра гляну. Кстати, забыл написать, что для 3  из 7 путей нормально определяется.
PM MAIL   Вверх
T0ohtik
Дата 28.5.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 9.2.2008

Репутация: нет
Всего: 1



С opendir тоже самое. Права на каталог, содержащий файлы каталоги 750.
PM MAIL   Вверх
azesmcar
Дата 28.5.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(T0ohtik @  28.5.2009,  11:34 Найти цитируемый пост)
С opendir тоже самое. Права на каталог, содержащий файлы каталоги 750. 

Код в студию.

Добавлено через 1 минуту и 15 секунд
Цитата(T0ohtik @  28.5.2009,  11:34 Найти цитируемый пост)
Права на каталог, содержащий файлы каталоги 750. 

а owner каталогов кто?
PM   Вверх
T0ohtik
Дата 28.5.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 9.2.2008

Репутация: нет
Всего: 1



Раз дошло дело до кода, тогда сразу хочу предупредить, что это все делается под iPhone.
Запускается все от имени mobile (проверял при помощи getenv("USER"))
Права на папку, содержимое которой я хочу просмотреть:
[quote]
drwxr-x---  9 mobile mobile  442 May 28 12:53 Media/
[/qote]
Права на содержимое папки Media
Цитата

drwxr-xr-x 2  mobile mobile      68 May 28 17:37 ApplicationArchives/
drwxr-x--- 6  mobile mobile     204 May 25 12:23 DCIM/
drwxr-x--- 2  mobile mobile     102 Jan 13 17:15 Downloads/
-rw-r--r--  1  mobile mobile 1482481 May 28 12:53 IMG_0489.jpg
drwxr-x--- 2  mobile mobile      68 Aug 13  2008 Photos/
-rwxr-xr-x 1  mobile mobile   58860 May 27 18:21 Picture\ 1.png*
drwxr-xr-x 4  mobile mobile     136 May 28 17:37 PublicStaging/
drwxr-xr-x 2  mobile mobile      68 Jan 13 17:15 Purchases/
-rw-r--r--  1   mobile mobile       0 Jan  3 19:22 com.apple.itunes.lock_sync
drwxr-x--- 6  mobile mobile     204 May 26 10:46 iTunes_Control/
-rwxr-xr-x 1  root   mobile   45440 Jan  3 20:03 jailbreak.log*

Корректно определяются  папки DCIM/ Photos/ и все файлы

Код

    if(opendir(chPath) )
    {     
        cell.isLocked = NO;    
        cell.isDirectory = YES;    
    }
    else
    {
        if(errno == ENOTDIR)
        {
           cell.isLocked = NO;
        }
        else 
        {
           cell.isLocked = YES;    
        }        
    
    }



Это сообщение отредактировал(а) T0ohtik - 28.5.2009, 18:48
PM MAIL   Вверх
Vampir41k
Дата 13.6.2009, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.3.2009

Репутация: нет
Всего: нет



когда то такое в универ писал....

Код

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>

int main (int argc, char **argv)
{
  struct stat mode;

    if (argc != 2)
    {
        printf("Usage: <file path>\n");
        exit(1);
    }

    if (stat (argv[1], &mode) == -1)
    {
        printf ("Error");
        exit (1);
    }

    printf ("File type:\t");

    switch (mode.st_mode & S_IFMT) 
    {
        case S_IFDIR:   printf("directory\n");          break;
        case S_IFIFO:   printf("FIFO\n");               break;
        case S_IFREG:   printf("regular file\n");       break;
        case S_IFCHR:   printf("character device\n");   break;
        case S_IFBLK:   printf("block device\n");       break;
    }

return 0;
}


Это сообщение отредактировал(а) Vampir41k - 13.6.2009, 01:12
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1078 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.