Сайт | Скачать | Видео | Wiki

Автор Тема: libpfs Библиотека функций  (Прочитано 10827 раз)

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

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
libpfs Библиотека функций
« : 19 Январь 2017, 15:22:04 »
Как мне кажется, реализовать библиотеку функций можно было бы более оптимальным способом.
В реализации, предложенной betcher в ветке develop, я вижу некоторые недостатки, а именно:
 Синтаксическая ошибка в любом месте libpfs может сломать любой другой скрипт.
 Некоторая сложность тестирования функционала и отладки.

По моему мнению, эти функции лучше было бы реализовать по тому же принципу, по которому работает busybox. Т.е. не использовать функции, а вызывать библиотеку как любой внешний исполняемый файл, передавая ему первым параметром название нужной задачи.
« Последнее редактирование: 20 Январь 2017, 09:47:59 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Библиотека функций
« Ответ #1 : 19 Январь 2017, 15:28:02 »
Запустить любую функцию можно отдельно. Вот так.
. /usr/lib/libpfs ; mountb ...

Не особо отличается от
/usr/bin/libpfs mountb

Зато в настоящем варианте файл либы читается один раз в начале скрипта, а в Вашем при каждом обращении. Еще у нас там сейчас переменные с дефолтными значениями общие для всех скриптов, если переделать как вы хотите то их нужно будет выносить в отдельный конфиг и его также нужно будет читать вначале каждого скрипта. В общем смысла не вижу, но и настаивать не стану.
« Последнее редактирование: 19 Январь 2017, 15:37:39 от betcher »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re: Библиотека функций
« Ответ #2 : 19 Январь 2017, 15:33:51 »
Запустить любую функцию можно отдельно
Из консоли?

. /usr/lib/libpfs
Вот это - ИМХО не очень хорошо.
Как мне кажется, лучше использовать функции из библиотеки так:
Код
libpfs mountb парамер1 параметр2

Т.е. так, как в ветке master сейчас вызываются скрипты mountb и umountb.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Библиотека функций
« Ответ #3 : 19 Январь 2017, 15:39:32 »
Из консоли?
конечно
. /usr/lib/libpfs ; mountb par1 par2

P.S. Дополнил предыдущий ответ

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: libpfs Библиотека функций
« Ответ #4 : 06 Февраль 2017, 11:03:49 »
Предлагаю вынести в отдельную функцию fs_type.

fstype=$(fs_type $filename)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re: libpfs Библиотека функций
« Ответ #5 : 06 Февраль 2017, 11:15:30 »
вынести в отдельную функцию fs_type.
Ок. Только без правок с побочкой для disktype

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: libpfs Библиотека функций
« Ответ #6 : 06 Февраль 2017, 11:43:27 »
Запушил, смотрите.
З.Ы. В libpfs нужно путь до ченджез вписать.
changesDir=
Не помню как у вас в ПРА.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re: libpfs Библиотека функций
« Ответ #7 : 07 Февраль 2017, 09:02:52 »
changesDir=
/mnt/live/memory/changes Не нашел где понадобился. Вроде без этого обходились. Или это для sync2layer ?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: libpfs Библиотека функций
« Ответ #8 : 07 Февраль 2017, 09:31:13 »
Да для sync2layer.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re: libpfs Библиотека функций
« Ответ #9 : 07 Февраль 2017, 09:36:29 »
Добавил в гит.  Так отлично

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: libpfs Библиотека функций
« Ответ #10 : 07 Февраль 2017, 10:43:49 »
Надо бы sync2layer в пра проверить, возможно слэш нужен в конце.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re: libpfs Библиотека функций
« Ответ #11 : 07 Февраль 2017, 10:52:46 »
Судя по changesDir=${SYSMNT}/changes/ - надо. Дописал. Он по любому не помешает
sync2layer в selftest никак не прикрутить?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: libpfs Библиотека функций
« Ответ #12 : 07 Февраль 2017, 11:30:16 »
Боюсь что нет. Там необратимые изменения. Ну то есть не ломает конечно, но вернуть к состоянию до  sync2layer не получится.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: libpfs Библиотека функций
« Ответ #13 : 17 Февраль 2017, 11:49:49 »
Хорошая мысля приходит опосля.
Код
if [ "$(basename $0)" == "libpfs" ] ;then
[ $1 ] || exit 1
command="$1"
shift
$command $@
fi
Вот такой кусочек в конце либы позволяет использовать ее так как у нас сейчас в скриптах и как Zay хотел тоже.

/usr/lib/libpfs disktypeb /dev/sda1 

тоже что и
. /usr/lib/libpfs ; disktypeb /dev/sda1

« Последнее редактирование: 18 Февраль 2017, 09:00:46 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re: libpfs Библиотека функций
« Ответ #14 : 18 Февраль 2017, 09:01:31 »
Хорошая мысля приходит опосля.
Давайте сделаем и переместим libpfs в /usr/bin