скачать с perforce.freebsd.org

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 13:34:11

Поскольку ни p4web.freebsd.org, ни perforce.freebsd.org не предаставляют возможности скачать архив как это можно сделать, например, во фронтенде к git, я попробовал скачать пофайлово с помощью p4fetch.rb. Все было бы прекрасно, но p4fetch.rb затыкается на пустом месте с Unknown error: 0:

Код: Выделить всё

% ./p4fetch.rb --depot //depot/user/pjd/ --repo zfs
fetch: http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/bin/date/extern.h&REV=1: Connection reset by peer
fetch: http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/bin/date/netdate.c&REV=1: Unknown error: 0
fetch: http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/bin/date/vary.c&REV=1: Unknown error: 0
fetch: http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/bin/date/vary.h&REV=1: Unknown error: 0
/usr/local/lib/ruby/1.8/net/protocol.rb:133:in `sysread': Connection reset by peer (Errno::ECONNRESET)
        from /usr/local/lib/ruby/1.8/net/protocol.rb:133:in `rbuf_fill'
        from /usr/local/lib/ruby/1.8/timeout.rb:62:in `timeout'
        from /usr/local/lib/ruby/1.8/timeout.rb:93:in `timeout'
        from /usr/local/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
        from /usr/local/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
        from /usr/local/lib/ruby/1.8/net/protocol.rb:126:in `readline'
        from /usr/local/lib/ruby/1.8/net/http.rb:2020:in `read_status_line'
        from /usr/local/lib/ruby/1.8/net/http.rb:2009:in `read_new'
         ... 16 levels...
        from /home/blah/p4fetch.rb:104:in `fetch_files'
        from /home/blah/p4fetch.rb:102:in `each'
        from /home/blah/p4fetch.rb:102:in `fetch_files'
        from /home/blah/p4fetch.rb:148
вывод с verbose: http://pastebin.com/m1db2ef81
Пробовал увеличить таймаут в /usr/local/lib/ruby/1.8/net/protocol.rb:133, но не помогло. Есть кто со знанием ruby? В чем может быть проблема?

Или как иначе тестировать zfs (version 13) и новый usb стэк? Они же ведь не экспортируются в p4-cvs-all на cvsup1{0,8}.freebsd.org.

ps, Обещанное избавление от perforce в пользу svn так и не случилось. А мне просто надоело мерджить изменения в локалную версию zfs_20080727.patch.bz2 (баг с insmntque() меня добил).

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Alex Keda » 2008-09-11 13:36:39

ну, пару месяцев назад я тоже мучал эту хреновину.
из 10 попыток один раз скачала нормально =(((
причн тоже не понял - не знаю я всех этих африканских языков программирования...
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 13:59:17

lissyara писал(а):не знаю я всех этих африканских языков программирования...
а переписать на любимом ЯП не пробовал? Без опыта написание прохождения всех папок рекурсивно и сбор файлов у мя не получилось. Че-то я хз как манипулировать списками в sh(1).

Есть кто-то, кому не сложно?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-11 14:22:33

find может пройти рекурсивно и выбрать только то, что нужно, дажи изобретатить ничего не надо

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 14:49:59

zg писал(а):find может пройти рекурсивно и выбрать только то, что нужно, дажи изобретатить ничего не надо
fts(3), который используется в find для прохождения иерархии файлов, не понимает html. Чтобы он понял, нужен слой трансляции в виде fuse-модуля и парсера html.

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 16:29:25

lissyara писал(а):из 10 попыток один раз скачала нормально =(((
поставил sleep 1[?] перед fetch(1) и те файлы скачались без проблем

теперь осталось догадаться к какой svn-ревизии они относятся, чтобы сгенерить патч

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-11 16:46:26

Гость писал(а):
zg писал(а):find может пройти рекурсивно и выбрать только то, что нужно, дажи изобретатить ничего не надо
fts(3), который используется в find для прохождения иерархии файлов, не понимает html. Чтобы он понял, нужен слой трансляции в виде fuse-модуля и парсера html.
да всё он может и понимает, ты скажи чего тебе надо

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 17:21:51

zg писал(а):да всё он может и понимает, ты скажи чего тебе надо
скачать рекурсивно //depot/user/pjd/zfs и //depot/projects/usb для начала

ps, у мя нет login'а ни на p4, ни на freefall.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-11 17:30:23

Гость писал(а):скачать рекурсивно //depot/user/pjd/zfs и //depot/projects/usb для начала
нда, клёво объяснил :-o рекурсивно качать может и wget, только что-то http тут не видать... ты скажи от куда чего брать, и что куда пихать, а то я ./p4fetch.rb вижу впервые.

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 19:05:49

zg писал(а):нда, клёво объяснил :-o рекурсивно качать может и wget, только что-то http тут не видать...
это пути в p4. Perforce - это то место, где идет разработка FreeBSD перед тем как она попадает в HEAD (8-CURRENT).
//depot/user/pjd/zfs/ - на perforce.freebsd.org | на p4web.freebsd.org
//depot/projects/usb/ - на perforce.freebsd.org | на p4web.freebsd.org
zg писал(а):ты скажи от куда чего брать, и что куда пихать, а то я ./p4fetch.rb вижу впервые.
директории там идут после подзаголовка Subdirs, а файлы после подзаголовка Files:

Код: Выделить всё

<P><b>Subdirs</b>
...
<a href="/depotTreeBrowser.cgi?FSPC=//depot/user/pjd/zfs/bin&HIDEDEL=YES">/bin</a><br>
<a href="/depotTreeBrowser.cgi?FSPC=//depot/user/pjd/zfs/cddl&HIDEDEL=YES">/cddl</a><br>
<a href="/depotTreeBrowser.cgi?FSPC=//depot/user/pjd/zfs/contrib&HIDEDEL=YES">/contrib</a><br>
<a href="/depotTreeBrowser.cgi?FSPC=//depot/user/pjd/zfs/crypto&HIDEDEL=YES">/crypto</a><br>
...
<P><b>Files</b>
...
<a href="fileLogView.cgi?FSPC=//depot/user/pjd/zfs/COPYRIGHT">COPYRIGHT</a><br>
<a href="fileLogView.cgi?FSPC=//depot/user/pjd/zfs/KNOWN%5fPROBLEMS">KNOWN_PROBLEMS</a><br>
<a href="fileLogView.cgi?FSPC=//depot/user/pjd/zfs/LOCKS">LOCKS</a><br>
<a href="fileLogView.cgi?FSPC=//depot/user/pjd/zfs/LOR">LOR</a><br>
<a href="fileLogView.cgi?FSPC=//depot/user/pjd/zfs/MAINTAINERS">MAINTAINERS</a><br>
...
Прямые ссылки на файлы получаются, если заменить fileLogView.cgi на fileDownLoad.cgi и добавлением номера ревизии в конец. Таким образом и выкачиваются все файлы:

Код: Выделить всё

% ps lwwp `pgrep fetch`
  UID   PID  PPID CPU PRI NI   VSZ   RSS MWCHAN STAT  TT       TIME COMMAND
 1001 32318 31667   0  44  0  9724  2192 sbwait S      6    0:00.00 /usr/bin/fetch -q -a -w5 -o zfs/zfs/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dof.c http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/cddl/contrib/opensolaris/lib/libdtrace/common/dt%5fdof.c&REV=1

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-11 20:01:49

гуд, ща чего-нить сваяем :smile:

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 20:44:27

  • p4fetch.rb качает кадждый файл отдельным процессом последовательно

    если будешь реализовывать скачку не в самом скрипте, а внешней прогой, то попробуй ей скормить несколько файлов и запустить несколько инстанций этой проги. Должно увеличить общую скорость скачки.
  • p4fetch.rb не следит за ревизиями файлов, а поскольку ни на дату, ни на размер ссылки передаваемой нельзя полагаться, то этот скрипт качает каждый файл заново

    зная чуток как сей веб-фронтенд позволяет скачивать и просматривать ревизии (fileLogView.cgi), можно сделать простой маппинг в специально отведенном файле, напр., vary.h&REV=1 и при следующем запуске не скачивать vary.h, если ссылка на него содержит &REV=1, но скачать, если содержит &REV=2

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 21:18:54

Гость писал(а):fileLogView.cgi
его даже не обязательно трогать, т.к. depotTreeBrowser.cgi уже выдает номера последних ревизий

Код: Выделить всё

<a href="fileLogView.cgi?FSPC=//depot/user/pjd/zfs/MAINTAINERS">MAINTAINERS</a><font color=#808080>&nbsp;#</font><a href="fileViewer.cgi?FSPC=//depot/user/pjd/zfs/MAINTAINERS&REV=3">3</a></td>
//depot/user/pjd/zfs/MAINTAINERS&REV=3

ps, вообщем, надеюсь твоя реализация не будет такой медленной как p4fetch.rb

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение paradox » 2008-09-11 21:19:59

в портах есть утилиты
правда они все бинарные и написаны под 4x
поэтому compat еще стянеться
попробуйте ее помучать
там вроде и для админа и для юзера утилиты

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 21:45:14

paradox писал(а):там вроде и для админа и для юзера утилиты
а если нет аккаунта? насколько мне известно perforce не поддерживает anonymous access, web-frontend - исключение.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение paradox » 2008-09-11 22:02:58

а если нет аккаунта? насколько мне известно perforce не поддерживает anonymous access
хз
это токо мысли
у меня у самого нехватило терпения даже утилиты скачать)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-11 22:09:52

Гость писал(а):ps, вообщем, надеюсь твоя реализация не будет такой медленной как p4fetch.rb
ишь какой шустрый :roll:

Код: Выделить всё

#!/bin/sh

DEPOT=//depot/user/pjd/zfs/games/
HTTP_PREFIX=http://perforce.freebsd.org/

LINK1="http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=${DEPOT}&HIDEDEL=YES"

cd `dirname "$0"`

TMP1='temp1.txt'
TMP2='temp2.txt'

DIRS_STORAGE='dirs.txt'
FILES_STORAGE='files.txt'

#rm -f "${DIRS_STORAGE}" "${FILES_STORAGE}"

HEAD1="Subdirs"
HEAD2="Files"

LINKS="${LINK1}"

SEARCH1='fileViewer.cgi\?FSPC=//[^\"]+'
SEARCH2='depotTreeBrowser.cgi\?FSPC=//[^\"]+'

download_page() {
    wget -O "$2" -o "$3" "$1"
    return $?
}

parse_page() {
  grep -oE "${HEAD1}|${HEAD2}|${SEARCH1}|${SEARCH2}" $1 | \
  awk -F. -v dirsSection="${HEAD1}" -v filesSection="${HEAD2}" 'BEGIN{
    addDirs  = 0;
    addFiles = 0;
  }{
    #print $1;
    if ( $1 == "depotTreeBrowser" && addDirs ) dirs[i++]=$0;
    else if ( $1 == "fileViewer" && addFiles ) files[i++]=$0;
    else if ( $1 == dirsSection  ) addDirs  = 1;
    else if ( $1 == filesSection ) addFiles = 1;
  }
  END{
    #print "Subdirs";
    for(i in dirs) print dirs[i];
    
    #print "Files"
    for(i in files) print files[i];
  }'
}

get_files() {
  grep 'fileViewer' $1 | sed "s~fileViewer~${HTTP_PREFIX}fileDownLoad~g"
}

get_subdirs() {
  grep 'depotTreeBrowser' $1 | sed "s~depotTreeBrowser~${HTTP_PREFIX}depotTreeBrowser~g"  
}

while true 
do
  echo -n > "${DIRS_STORAGE}"
  
  for I in ${LINKS}
  do
    echo -n "`echo \"${I}\" | grep -oE '//depot[^&]+'` ... " 1>&2
    
    download_page "${I}" "${TMP1}" "${TMP2}"
    
    if [ $? -ne 0 ]; then
      echo 'fail' 1>&2
      cat "${TMP2}" 1>&2
      exit 1
    fi
    
    parse_page "${TMP1}" > "${TMP2}"
    get_files "${TMP2}"
    get_subdirs "${TMP2}" >> "${DIRS_STORAGE}"
    
    echo " done" 1>&2
  done
  
  if [ -z "`head -n 1 ${DIRS_STORAGE}`" ]; then
    echo "Downloading complete!" 1>&2
    break
  fi
  
  LINKS="`sort ${DIRS_STORAGE}`"
done

rm -f "${TMP1}" "${TMP2}" "${DIRS_STORAGE}"
примерно так :roll:

Код: Выделить всё

zg# ./1.sh > files.txt
//depot/user/pjd/zfs/games/ ...  done
//depot/user/pjd/zfs/games/bcd ...  done
//depot/user/pjd/zfs/games/caesar ...  done
//depot/user/pjd/zfs/games/factor ...  done
//depot/user/pjd/zfs/games/fortune ...  done
//depot/user/pjd/zfs/games/grdc ...  done
//depot/user/pjd/zfs/games/morse ...  done
//depot/user/pjd/zfs/games/number ...  done
//depot/user/pjd/zfs/games/pom ...  done
//depot/user/pjd/zfs/games/ppt ...  done
//depot/user/pjd/zfs/games/primes ...  done
//depot/user/pjd/zfs/games/random ...  done
//depot/user/pjd/zfs/games/fortune/datfiles ...  done
//depot/user/pjd/zfs/games/fortune/fortune ...  done
//depot/user/pjd/zfs/games/fortune/strfile ...  done
//depot/user/pjd/zfs/games/fortune/tools ...  done
//depot/user/pjd/zfs/games/fortune/unstr ...  done
Downloading complete!
zg# head -n 10 files.txt
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/Makefile&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/Makefile.inc&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/bcd/bcd.c&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/bcd/Makefile&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/bcd/bcd.6&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/caesar/caesar.c&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/caesar/rot13.sh&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/caesar/Makefile&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/caesar/caesar.6&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/factor/factor.c&REV=1
zg#
закачку файлов я не делал, ссылки просто складываются в files.txt

коментарии :smile: ?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение paradox » 2008-09-11 22:18:26

если я неошибаюсь то бучер юзает перфорс
напиши ему на меил или в личку
думаю он поможет

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Alex Keda » 2008-09-11 22:32:17

чем? логином поделиться? =)))
или раз скачает чего надо?
=====
гость прав в общем - надо или нормальный интерфейс или нормальную утилиту...
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-11 22:34:06

lissyara писал(а):гость прав в общем - надо или нормальный интерфейс или нормальную утилиту...
в принципе закачку можно распаралелить потоков на 10, особых сложностей не должно быть.

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-11 23:40:51

zg писал(а):

Код: Выделить всё

zg# head -n 10 files.txt
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/Makefile&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/Makefile.inc&REV=1
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/bcd/bcd.c&REV=1
...
это хде? единственное место, где у тя упоминается $FILES_STORAGE - FILES_STORAGE='files.txt'. Забыл добавить перенаправление в get_files "${TMP2}"

и зачем cd `dirname "$0"` почти в самом начале? и без него работает

ps, спасибо за алгоритм на sh/awk. Сыровато, но интересно.

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-12 0:33:21

zg писал(а):в принципе закачку можно распаралелить потоков на 10, особых сложностей не должно быть.
аха: sed "s|.*FSPC=//depot/user/pjd/zfs/games/\(.*\)&REV=.*|'&' -o '\1'|" files.txt | xargs -P3 -L24 curl --create-dirs

но что делать с процентами в именах файлов? wget/curl/fetch их умеют превращать обратно в человеческий вид?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение zg » 2008-09-12 7:03:33

Гость писал(а):это хде? единственное место, где у тя упоминается $FILES_STORAGE - FILES_STORAGE='files.txt'. Забыл добавить перенаправление в get_files "${TMP2}"
это в
zg писал(а):zg# ./1.sh > files.txt
перенаправить не забыл, просто решил сделать в stdout, чтобы конвеер можно было варганить.
Гость писал(а):и зачем cd `dirname "$0"` почти в самом начале? и без него работает
чтоб текущим каталогом всегда был тот, где лежит этот файл. Иначе, если вызвать скрипт из корня по абсолютному пути, вся относительность потеряется.
Гость писал(а):единственное место, где у тя упоминается $FILES_STORAGE - FILES_STORAGE='files.txt'
его можно убрать, это только для теста было. Список файлов выводится в STDOUT, сообщения о закачке в STDERR.
Гость писал(а):но что делать с процентами в именах файлов? wget/curl/fetch их умеют превращать обратно в человеческий вид?
да там впринципе только один символ кодируется _ %5f, его можно и седом подменить

я тут подумал, что если построить вывод файлов в сокет, то можно сделать непрерывную закачку в несколько потоков, если же делать через конвеер, то закачка будет прерываться, чтобы ждать пока потоки докачаются, чтобы начать новые.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение paradox » 2008-09-12 10:15:54

>lissyara
поделиться советом как по нормальному скачать
я очень сомневаюсь что нет нормальных утилит(способов)
и что нужен логин пассворд для доступа к перфорсу других юзеров

Гость
проходил мимо

Re: скачать с perforce.freebsd.org

Непрочитанное сообщение Гость » 2008-09-12 13:01:42

zg писал(а):да там впринципе только один символ кодируется _ %5f, его можно и седом подменить
я поступил проще: выкинул все из parse_page() и вставил всего лишь

Код: Выделить всё

sed -nE  "/Show deleted files/d
s|.*(fileLogView.cgi\?FSPC=//[^\"]+)\">([^<]+)<.*|\1 '\2'|p
s|.*(depotTreeBrowser.cgi\?FSPC=//[^\"]+)\">|\1|p" $1
На выходе получил точно такой же список с возможностью использовать безпроцентное имя.

Код: Выделить всё

http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/random/random.c 'random.c'
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/random/randomize%5ffd.c 'randomize_fd.c'
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/random/randomize%5ffd.h 'randomize_fd.h'
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/fortune/datfiles/Makefile 'Makefile'
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/fortune/datfiles/fortunes 'fortunes'
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/fortune/datfiles/fortunes%2do.fake 'fortunes-o.fake'
http://perforce.freebsd.org/fileDownLoad.cgi?FSPC=//depot/user/pjd/zfs/games/fortune/datfiles/fortunes%2do.real 'fortunes-o.real'
Можно еще избавиться от get_*(), если в конце добавить:

Код: Выделить всё

sed -nE "
...
/fileLogView/w $FILES_STORAGE
/depotTreeBrowser/w $DIRS_STORAGE
" $1
но у мя че-то sed не хочет писать в файлы.
zg писал(а):я тут подумал, что если построить вывод файлов в сокет, то можно сделать непрерывную закачку в несколько потоков, если же делать через конвеер, то закачка будет прерываться, чтобы ждать пока потоки докачаются, чтобы начать новые.
А почему сие нельзя реализовать через FIFO? while-loop следит за кол-вом процессов и если их меньше 4, то запускает последовательно (или параллельно с &), чтобы их стало ровно 4. А эти процессы тупо читают из pipe-файла 10 строк и не более.

По-моему сокеты нужны только там, где требуется двустороннее общение. Но мы же будем управлять процессами из того же скрипта, из которого же генерировать поток в FIFO, или нет?