Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 13.03.2011, 15:06   #11 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Код:
int main(int argc,char* argv[])
{
  const char* path=argv[0];
меняем на
Код:
int main(int argc,char* argv[])
{
  const char* path=argv[0];
  bool r=false;
  bool l=false;
Long Cat вне форума   Ответить с цитированием

Старый 13.03.2011, 15:06
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Данные топики очень похожи по содержанию на вашу тему

Ошибка 691 в Win 7
Паскаль. помощь в компиляции моего кода
Что за ошибка?

Старый 13.03.2011, 15:09   #12 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Код:
int main(int argc,char* argv[])
{
  const char* path=argv[0];
меняем на
Код:
int main(int argc,char* argv[])
{
  const char* path=argv[0];
  bool r=false;
  bool l=false;
сделал, больше r и l не требует, а что сделать с myView? вообще удалить?
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 15:15   #13 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Да, я же написал заменить.
Long Cat вне форума   Ответить с цитированием
Старый 13.03.2011, 15:20   #14 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот так? если да, то я не совсем тогда понял как она работает! она получается ничего не делает!
Код:
#ifndef _VIEW_H
#define  _VIEW_H

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <string.h>
#include <iostream>
#include <pwd.h>
#include <grp.h>
#include <errno.h>

using namespace std;

int main(int argc,char* argv[])
{
 // const char* path=argv[0];
  bool r=false;
  bool l=false;
  const char* path=argv[0];
  DIR* dir = opendir(path);
  if(!dir)
    return 1;

  struct dirent *rd;

  while((rd = readdir(dir)))
  {
    if(!strcmp(rd->d_name,".") || !strcmp(rd->d_name,".."))
    {
      continue;
    }
    struct stat entryInfo;
    char pathName[PATH_MAX+1];

    strncpy(pathName,path,PATH_MAX);
    strncat(pathName,"/",PATH_MAX);
    strncat(pathName,rd->d_name,PATH_MAX);

    if(!lstat(pathName,&entryInfo))
    {
      if(l)
      {
        switch(entryInfo.st_mode & S_IFMT)
        {
          case S_IFDIR:
          {
            cout << "d";
            break;
          }
          case S_IFIFO:
          {
            cout << "p";
            break;
          }
          case S_IFSOCK:
          {
            cout << "s";
            break;
          }
          case S_IFLNK:
          {
            cout << "l";
            break;
          }
          default:
            cout << "-";
        }

        //Владелец
        //read
        if(entryInfo.st_mode & S_IRUSR)
          cout << "r";
        else
          cout << "-";
        //write
        if(entryInfo.st_mode & S_IWUSR)
          cout << "w";
        else
          cout << "-";
        //execute
        if(entryInfo.st_mode & S_IXUSR)
          cout << "x";
        else
          cout << "-";

        //Группа
        //read
        if(entryInfo.st_mode & S_IRGRP)
          cout << "r";
        else
          cout << "-";
        //write
        if(entryInfo.st_mode & S_IWGRP)
          cout << "w";
        else
          cout << "-";
        //execute
        if(entryInfo.st_mode & S_IXGRP)
          cout << "x";
        else
          cout << "-";

        //Прочие
        //read
        if(entryInfo.st_mode & S_IROTH)
          cout << "r";
        else
          cout << "-";
        //write
        if(entryInfo.st_mode & S_IWOTH)
          cout << "w";
        else
          cout << "-";
        //execute
        if(entryInfo.st_mode & S_IXOTH)
          cout << "x";
        else
          cout << "-";

        cout << " ";
        struct passwd* pwd = getpwuid(getuid());
        struct group* grp = getgrgid(pwd->pw_gid);
        cout << " " << grp->gr_name << " " << pwd->pw_name << " ";
      }

      if(S_ISDIR(entryInfo.st_mode))
      {
        cout << rd->d_name << endl;
        if(r)
        {
     //  const char* path=argv[0];
        }
      }else
      if(S_ISREG(entryInfo.st_mode))
      {
        cout << rd->d_name;
      }else
      if(S_ISLNK(entryInfo.st_mode))
      {        
        char targetName[PATH_MAX+1];
        if(readlink(pathName,targetName,PATH_MAX))
        {
          cout << rd->d_name << " link: "
              << targetName;
        }
      }else
      if(S_ISSOCK(entryInfo.st_mode))
      {
        cout << rd->d_name;
      }
      cout << endl;
    }
    //Проверка для предотвращения падения стека
    else
    {
      cout << rd->d_name << " " << strerror(errno) << endl;
      exit(1);
    }
  }
  closedir(dir);
}

#endif  /* _VIEW_H */
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 15:23   #15 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Замените bool l=false; на bool l=true;
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.03.2011, 15:27   #16 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Замените bool l=false; на bool l=true;
все равно ничего не выдает... может я не правильно запускаю? у меня проект называется ls...

dimon@dimon-Aspire-8920:~/ls/Debug/src$ ./ls /home/dimon/
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 15:31   #17 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Поставьте после
Код:
strncat(pathName,rd->d_name,PATH_MAX);
Код:
cout<<pathName<<endl;
Long Cat вне форума   Ответить с цитированием
Старый 13.03.2011, 15:33   #18 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Поставьте после
Код:
strncat(pathName,rd->d_name,PATH_MAX);
Код:
cout<<pathName<<endl;
не изменилось ничего
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 15:50   #19 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

может прога сама по себе не рабочая? хотя программист уверял, что прога работает...
sidjey вне форума   Ответить с цитированием
Старый 14.03.2011, 09:26   #20 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Куда же я смотрел...
Замените:
Код:
const char* path=argv[0];
на
Код:
const char* path=argv[1];
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 23:24.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.