Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 19:22   #1
aank10
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 81
По умолчанию Программа под линукс закоментировать и удалить пару функций

Есть программа на с++ под Linux(ubuntu), которая выводит "информацию о файлах в директории (в текущей по умолчанию или в переданной в качестве аргумента в командной строке) - inode, права доступа, количество ссылок на файл, имя владельца файла, имя группы, размер в байтах, дату и время последней модификации файла, и имя фала. По ключу "-а" так же выводится информация о скрытых файлах", написана не мной, нужно удалить некоторые функции, и привинтить возможность в ручную вводить путь к файлу и определения его свойств. Сделать надо до 12.04.2013.
вот код
[cpp]
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
void do_ls(char*,char);
void dostat(char*,char*);
void show_file_info(char*,struct stat*);
void mode_to_letters(int,char*);
char* uid_to_name(uid_t);
char* gid_to_name(gid_t);

int main(int ac,char *argv[]){
char a=0;
if((ac==2)&&(strcmp(*(argv+1),"-a")==0)){
a=1;
*++argv;
--ac;
}
if(ac==1)
do_ls((char*)".",a);
else{
while (--ac){
printf("\33[36;1m%s: \33[0m\n",*++argv);
do_ls(*argv,a);
}
}

return 0;
}
void do_ls(char *dirname,char a){
DIR *dir_ptr;
dirent *direntp;
if((dir_ptr=opendir(dirname))==NULL )
fprintf(stderr,"myls:cannot open %s\n",dirname);
else{
while((direntp=readdir(dir_ptr))!=N ULL){
if(!a){
if(*(direntp->d_name)!='.'){
printf("%8d ",(int)direntp->d_ino);
dostat(direntp->d_name,dirname);
}
}
else{
printf("%8d ",(int)direntp->d_ino);
dostat(direntp->d_name,dirname);
}
}
closedir(dir_ptr);
}
}
void dostat(char *filename,char *dirname){
struct stat info;
char* way_to_file=new char [strlen(filename)+strlen(dirname)+2];
strcpy(way_to_file,dirname);
strcpy(way_to_file+strlen(dirname), "/\0");
strcpy(way_to_file+strlen(way_to_fi le),filename);
if(stat(way_to_file,&info)==-1){
printf("Error %s\n",way_to_file);
perror(filename);
}
else
show_file_info(filename,&info);
delete way_to_file;
}
void show_file_info(char *filename,struct stat *info_p){
char modestr[11];
mode_to_letters(info_p->st_mode,modestr);
printf("%s",modestr);
printf("%4d ", (int)info_p->st_nlink);
printf("%-8s ",uid_to_name(info_p->st_uid));
printf("%-8s",gid_to_name(info_p->st_gid));
printf("%8ld ",(long)info_p->st_size);
printf("%.12s ",4+ctime(&(info_p->st_mtime)));
printf("%s\n",filename);
}
void mode_to_letters(int mode,char *str){
strcpy(str,"----------");
if(S_ISDIR(mode))str[0]='d';
if(S_ISCHR(mode))str[0]='c';
if(S_ISBLK(mode))str[0]='b';
if(mode & S_IRUSR)str[1]='r';
if(mode & S_IWUSR)str[2]='w';
if(mode & S_IXUSR)str[3]='x';
if(mode & S_IRGRP)str[4]='r';
if(mode & S_IWGRP)str[5]='w';
if(mode & S_IXGRP)str[6]='x';
if(mode & S_IROTH)str[7]='r';
if(mode & S_IWOTH)str[8]='w';
if(mode & S_IXOTH)str[9]='x';
}
#include <pwd.h>
char *uid_to_name(uid_t uid){
struct passwd *getwuid(), *pw_ptr;
static char numstr[10];
if((pw_ptr=getpwuid(uid))==NULL){
sprintf(numstr,"%d",uid);
return numstr;
}
else
return pw_ptr->pw_name;
}
#include <grp.h>
char *gid_to_name(gid_t gid){
struct group *getgrgid(gid_t), *grp_ptr;
static char numstr[10];
if((grp_ptr=getgrgid(gid))==NULL){
sprintf(numstr,"%d",gid);
return numstr;
}
else
return grp_ptr->gr_name;
}

[/cpp]
aank10 вне форума Ответить с цитированием
Старый 08.05.2013, 19:49   #2
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

<-- контакты слева, пишите
tools вне форума Ответить с цитированием
Старый 08.05.2013, 20:07   #3
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

пишите - сделаю.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 08.05.2013, 22:55   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от aank10 Посмотреть сообщение
Сделать надо до 12.04.2013.
Я что, попал в машину времени?
s-andriano вне форума Ответить с цитированием
Старый 09.05.2013, 18:55   #5
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Заказ взял.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исполнить тетрады на си под линукс tarasman11 Помощь студентам 0 02.05.2013 16:28
удаленный фильтр под линукс Tiva Фриланс 0 17.09.2012 15:01
заставка под линукс Eyxeniy Qt и кроссплатформенное программирование С/С++ 0 18.05.2011 20:10
асм под линукс pufystyj Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 14.02.2011 10:22