# HG changeset patch # User igor@book.xt.vpn # Date 1259835802 -7200 # Node ID 0414adc0605976493ba6afc87431b58aad120615 # Parent a2bd59599719e9fce95f9549b90c8d3891a04ab2 Создана программа l3prompt.c (аналог l3prompt, написанного на Perl). Занимается тем, что разбивает строку на блоки и вставляет между ними строки-разделители. По сути это нужно, чтобы сделать приглашение невидимым. Сишная версия работает в 2-3 раза быстрее чем перловая. По умолчанию не инсталлируется. Для использования нужно откомпилировать и положить вместо l3prompt gcc -o l3prompt l3prompt.c mv l3prompt ~/.lilalo/ diff -r a2bd59599719 -r 0414adc06059 README --- a/README Tue Jun 23 01:24:33 2009 +0300 +++ b/README Thu Dec 03 12:23:22 2009 +0200 @@ -1,7 +1,7 @@ LiLaLo - Live Lab Log -(c) Игорь Чубин, 2004-2008 +(c) Игорь Чубин, 2004-2009 Лицензия, по которой распространяется приведена в файле LICENSE diff -r a2bd59599719 -r 0414adc06059 l3prompt.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/l3prompt.c Thu Dec 03 12:23:22 2009 +0200 @@ -0,0 +1,52 @@ + +/* + * export PS1='\[$($L3_HOME/l3prompt "v3#\!#$?#$UID#$$#$(/bin/date +%s)#$PWD#$RANDOM#")$(l3_save_last_line >& /dev/null)\]'$PS1 + * + * + * l3prompt perl code: + * + * my $string=$ARGV[0]; + * my $insert="\e[1K\e[10D"; + * my $max=5; + * + * while (length($string) > $max) { + * $res .= substr($string, 0, $max).$insert; + * $string = substr($string, $max); + * } + * $res .= $string.$insert; + * print "$res"; + * + */ +#include +#define N 5 +#define BUF_SIZE N+1 +char* mixin="\e[1K\e[10D"; +char buf[BUF_SIZE]; +int main(int argc, char **argv) +{ + char *i,*j; + int n; + argc--; + argv++; + while (argc > 0) { + i=argv[0]; + j=&buf[0]; + n=0; + while(*i) { + *j=*i;i++;j++; + n++; + if (n==N) { + *j=0; + fputs(buf, stdout); + fputs(mixin,stdout); + j=&buf[0]; + n=0; + } + } + *j=*i; + fputs (buf, stdout); + if (n) fputs(mixin,stdout); + argc--; + argv++; + }; +}