Inital commit for simple tools repo

This commit is contained in:
pips 2016-10-04 23:52:17 +02:00
commit 8f862e91e0
7 changed files with 285 additions and 0 deletions

27
color.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/bash
#
# This file echoes a bunch of color codes to the
# terminal to demonstrate what's available. Each
# line is the color code of one forground color,
# out of 17 (default + 16 escapes), followed by a
# test use of that color on all nine background
# colors (default + 8 escapes).
#
T='gYw' # The test text
echo -e "\n 40m 41m 42m 43m\
44m 45m 46m 47m";
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
'1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
' 36m' '1;36m' ' 37m' '1;37m';
do FG=${FGs// /}
echo -en " $FGs \033[$FG $T "
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
done
echo;
done
echo

11
color.simple.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
# Print four lines showing blocks of colors: 0-7 | 0-7bold | 8-15 | 8-15bold
perl -CADS -lwe '
my $block = shift || (chr(0x2588) x 3);
for (["", 0], ["1;", 0], ["", 8], ["1;", 8]) {
my ($bold, $offset) = @$_;
my @range = map $offset + $_, 0..7;
printf "%s %-6s ", $bold ? "bold" : "norm", "$range[0]-$range[-1]";
print map("\e[${bold}38;5;${_}m$block", @range), "\e[0m"
}
' "$@"

22
justify Executable file
View file

@ -0,0 +1,22 @@
#!/bin/sh
aligncols="72"
if [ $# -gt 0 ];
then
aligncols="$1"
fi
TMPFILE="/tmp/justify.$USER.$$"
cat > $TMPFILE
length=`wc -l $TMPFILE`
echo ".ll $aligncols
.pl $length
.nh
.fi
`cat $TMPFILE`" | sed 's,\\,\\\\,g' | groff -kT utf8 | cat -s
rm $TMPFILE

22
removenl Executable file
View file

@ -0,0 +1,22 @@
#!/usr/bin/tcc -run
/* vim: set syn=c: */
#include <stdlib.h>
#include <stdio.h>
/*
* 0x0a - linefeed
* 0x0d - carriage return
**/
int
main() {
char buffer;
size_t nread;
while ((nread = fread(&buffer, 1, sizeof buffer, stdin)) > 0)
if (buffer != 0x0a && buffer != 0x0d)
fwrite(&buffer, 1, nread, stdout);
return 0;
}

41
spacesbreak Executable file
View file

@ -0,0 +1,41 @@
#!/usr/bin/tcc -run
/* vim: set syn=c: */
#include <stdlib.h>
#include <stdio.h>
#define WORD_BREAK " ()<>[]\""
static unsigned int is_word_break(char c);
int
main() {
char buffer, prevbuffer;
size_t nread;
while ((nread = fread(&buffer, 1, sizeof buffer, stdin)) > 0) {
if (is_word_break(buffer))
buffer = '\n';
if (buffer != '\n' || prevbuffer != '\n')
fwrite(&buffer, 1, nread, stdout);
prevbuffer = buffer;
}
return 0;
}
unsigned int
is_word_break(char c) {
static char *word_break = WORD_BREAK;
char *s = word_break;
while (*s) {
if (*s == c)
return 1;
s++;
}
return 0;
}

95
stpaster Executable file
View file

@ -0,0 +1,95 @@
#!/usr/bin/tcc -run
/* vim: set syn=c: */
/*
* stpaster intends to pass st(1) terminal content to dmenu(1) for rapid
* selection and finaly in xclip(1) for pasting easily.
*
* Remove empty lines from stdin and output fulllines, WORDS splited by
* space/tab, words splited by work breakers.
*
* see st & externalpipe patch.
* http://st.suckless.org/
* http://st.suckless.org/patches/externalpipe
*
* is_word_break() comes from :
* http://st.suckless.org/patches/configwordbreak
*
* Add to config.h shortcuts :
* { MODKEY, 'u', externalpipe, { .s = "stpaster | sort | uniq | dmenu | removenl | xclip -in -selection primary" } },
*
* memo :
* 0x09 - horizontal tab
* 0x0a - linefeed
* 0x0b - vertical tab
* 0x0c - form feed
* 0x0d - carriage return
* 0x20 - space
**/
#include <stdlib.h>
#include <stdio.h>
#define WORD_BREAK " ()<>[]\",/:'."
static unsigned int is_word_break(char c);
int
main() {
char *line = NULL;
size_t len = 0;
ssize_t nread = 0;
unsigned int i = 0;
unsigned int wasblank = 1;
unsigned int emptyline = 1;
while ((nread = getline(&line, &len, stdin)) != -1) {
/* remove empty lines */
emptyline = 1;
for (i = 0; i < nread; ++i)
if(line[i] != 0x20 && line[i] != 0x09 && line[i] != 0x0a)
emptyline = 0;
if (emptyline)
continue;
/* print each lines as is*/
printf("%s", line);
/* split each lines on space/tab */
for (i = 0; i < nread; ++i)
if (line[i] != 0x20 && line[i] != 0x09) {
wasblank = 0;
printf("%c", line[i]);
} else if (!wasblank) {
wasblank = 1;
printf("\n");
}
wasblank = 1;
/* split each lines on word breaker */
for (i = 0; i < nread; ++i)
if (!is_word_break(line[i])) {
wasblank = 0;
printf("%c", line[i]);
} else if (!wasblank) {
wasblank = 1;
printf("\n");
}
}
return 0;
}
unsigned int
is_word_break(char c) {
static char *word_break = WORD_BREAK;
char *s = word_break;
while (*s) {
if (*s == c)
return 1;
s++;
}
return 0;
}

67
trim Executable file
View file

@ -0,0 +1,67 @@
#!/usr/bin/tcc -run
/* vim: set syn=c: */
#include <stdlib.h>
#include <stdio.h>
/*
* 0x09 - horizontal tab
* 0x0a - linefeed
* 0x0b - vertical tab
* 0x0c - form feed
* 0x0d - carriage return
* 0x20 - space
**/
int
main() {
char *linein = NULL, *lineout = NULL;
size_t len = 0, lastblankchar = 0;
ssize_t nread;
unsigned int trimmingleft = 1;
unsigned int i, j;
while ((nread = getline(&linein, &len, stdin)) > 0) {
trimmingleft = 1;
lastblankchar = j = 0;
lineout = malloc(nread+1);
for (i = 0; i < nread; ++i) {
if (trimmingleft) {
if(linein[i] != 0x09 &&
linein[i] != 0x0a &&
linein[i] != 0x0b &&
linein[i] != 0x0c &&
linein[i] != 0x0d &&
linein[i] != 0x20) {
trimmingleft = 0;
}
}
if (!trimmingleft){
if(linein[i] != 0x09 &&
linein[i] != 0x0a &&
linein[i] != 0x0b &&
linein[i] != 0x0c &&
linein[i] != 0x0d &&
linein[i] != 0x20) {
lastblankchar = j + 1;
}
}
if (!trimmingleft) {
lineout[j++] = linein[i];
}
}
lineout[lastblankchar] = '\n';
lineout[lastblankchar+1] = '\0';
printf("%s", lineout);
free(lineout);
}
return 0;
}