lilalo
changeset 153:0414adc06059
Создана программа l3prompt.c (аналог l3prompt, написанного на Perl).
Занимается тем, что разбивает строку на блоки
и вставляет между ними строки-разделители.
По сути это нужно, чтобы сделать приглашение невидимым.
Сишная версия работает в 2-3 раза быстрее чем перловая.
По умолчанию не инсталлируется.
Для использования нужно откомпилировать
и положить вместо l3prompt
gcc -o l3prompt l3prompt.c
mv l3prompt ~/.lilalo/
Занимается тем, что разбивает строку на блоки
и вставляет между ними строки-разделители.
По сути это нужно, чтобы сделать приглашение невидимым.
Сишная версия работает в 2-3 раза быстрее чем перловая.
По умолчанию не инсталлируется.
Для использования нужно откомпилировать
и положить вместо l3prompt
gcc -o l3prompt l3prompt.c
mv l3prompt ~/.lilalo/
author | igor@book.xt.vpn |
---|---|
date | Thu Dec 03 12:23:22 2009 +0200 (2009-12-03) |
parents | a2bd59599719 |
children | 71d6b2a6b8eb 137cf5a580be |
files | README l3prompt.c |
line diff
1.1 --- a/README Tue Jun 23 01:24:33 2009 +0300 1.2 +++ b/README Thu Dec 03 12:23:22 2009 +0200 1.3 @@ -1,7 +1,7 @@ 1.4 1.5 LiLaLo - Live Lab Log 1.6 1.7 -(c) Игорь Чубин, 2004-2008 1.8 +(c) Игорь Чубин, 2004-2009 1.9 1.10 Лицензия, по которой распространяется 1.11 приведена в файле LICENSE
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/l3prompt.c Thu Dec 03 12:23:22 2009 +0200 2.3 @@ -0,0 +1,52 @@ 2.4 + 2.5 +/* 2.6 + * export PS1='\[$($L3_HOME/l3prompt "v3#\!#$?#$UID#$$#$(/bin/date +%s)#$PWD#$RANDOM#")$(l3_save_last_line >& /dev/null)\]'$PS1 2.7 + * 2.8 + * 2.9 + * l3prompt perl code: 2.10 + * 2.11 + * my $string=$ARGV[0]; 2.12 + * my $insert="\e[1K\e[10D"; 2.13 + * my $max=5; 2.14 + * 2.15 + * while (length($string) > $max) { 2.16 + * $res .= substr($string, 0, $max).$insert; 2.17 + * $string = substr($string, $max); 2.18 + * } 2.19 + * $res .= $string.$insert; 2.20 + * print "$res"; 2.21 + * 2.22 + */ 2.23 +#include <stdio.h> 2.24 +#define N 5 2.25 +#define BUF_SIZE N+1 2.26 +char* mixin="\e[1K\e[10D"; 2.27 +char buf[BUF_SIZE]; 2.28 +int main(int argc, char **argv) 2.29 +{ 2.30 + char *i,*j; 2.31 + int n; 2.32 + argc--; 2.33 + argv++; 2.34 + while (argc > 0) { 2.35 + i=argv[0]; 2.36 + j=&buf[0]; 2.37 + n=0; 2.38 + while(*i) { 2.39 + *j=*i;i++;j++; 2.40 + n++; 2.41 + if (n==N) { 2.42 + *j=0; 2.43 + fputs(buf, stdout); 2.44 + fputs(mixin,stdout); 2.45 + j=&buf[0]; 2.46 + n=0; 2.47 + } 2.48 + } 2.49 + *j=*i; 2.50 + fputs (buf, stdout); 2.51 + if (n) fputs(mixin,stdout); 2.52 + argc--; 2.53 + argv++; 2.54 + }; 2.55 +}