lilalo

changeset 153:0414adc06059

Создана программа l3prompt.c (аналог l3prompt, написанного на Perl).
Занимается тем, что разбивает строку на блоки
и вставляет между ними строки-разделители.

По сути это нужно, чтобы сделать приглашение невидимым.

Сишная версия работает в 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 +}