Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Установить утилиту more ( Си )  (Прочитано 907 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Убунтолог19

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Установить утилиту more ( Си )
« : 30 Мая 2010, 20:08:19 »
Компиляцию, то я и сам магу сделать, а вот как установить  more?
Да я вкурсе, что уже есть такая утилита, но меня интересует сам процесс установки, а также после установки, как его мене запускать.

#include <stdio.h>
#define PAGELEN 24
#define LINELEN 512
void do_more(FILE*);
int see_more();
int main(int ac, char *av[])  
{
 FILE *fp;
 if (ac==1)
   do_more(stdin);
 else
   while (--ac)                                        
     if ((fp==fopen(*++av, "r"))!=NULL)        
     {
       do_more(fp);
       fclose(fp);
     }
     else
       exit(1);
   return 0;
}
void do_more(FILE *fp)
{
  char line[LINELEN];
  int num_of_lines=0;
  int see_more(), reply;
  while (fgets(line, LINELEN, fp))
      {
        if (num_of_lines==PAGELEN)
             {
               reply=see_more();
               if (reply==0)
                 break;
               num_of_lines-=reply;
              }
        if (fputs(line, stdout)==EOF)
           exit(1);
        num_of_lines++;
      }
}
int see_more()
{
  int c;
  printf("\033[7 more? \033[m");
  while((c=getchar())!=EOF)
    {
      if (c=='q')
         return 0;
    //  if (c=='')
    //     return PAGELEN;
      if (c=='\n')
         return 1;
     }
   return 0;
}
« Последнее редактирование: 30 Мая 2010, 20:10:39 от Убунтолог19 »

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Установить утилиту more
« Ответ #1 : 30 Мая 2010, 20:09:41 »
Положить в /usr/bin? Я правильно понял?

Оффлайн Убунтолог19

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: Установить утилиту more ( Си )
« Ответ #2 : 30 Мая 2010, 20:14:09 »
Положить в /usr/bin? Я правильно понял?
Скопировал more01 туда
Цитировать
more01 12.txt
bash: /usr/bin/more01: Отказано в доступе
$ sudo more01 12.txt
Только программа не работает, может кто-то проверить на ошибки?
Программа ничего не выводит, а также просит администраторские права.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Установить утилиту more ( Си )
« Ответ #3 : 30 Мая 2010, 20:17:07 »
Добавьте права на исполнение, и прежде чем класть в системный каталог, можно было бы проверить и в домашнем.
Upd: У вас она вообще собирается? У меня только после пары исправлений. Программа работает, криво, но работает.
« Последнее редактирование: 30 Мая 2010, 20:24:16 от hippi90 »

Оффлайн Убунтолог19

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: Установить утилиту more ( Си )
« Ответ #4 : 30 Мая 2010, 20:31:34 »
2hippi90 После каких исправлений?

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Установить утилиту more ( Си )
« Ответ #5 : 30 Мая 2010, 20:39:09 »
if ((fp==fopen(*++av, "r"))!=NULL)на
if ((fp=fopen(*++av, "r"))!=NULL)В оригинале компилятор ругается на несоответствие типов, и добавьте #include <stdlib.h> для прототипа exit()

Оффлайн Убунтолог19

  • Автор темы
  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: Установить утилиту more ( Си )
« Ответ #6 : 30 Мая 2010, 22:19:01 »
2hippi90 Спасибо

 

Страница сгенерирована за 0.03 секунд. Запросов: 25.