Hello all, From more than 30 days I am waiting for an upload for the package funcoeszz[1] by the previous sponsor. This new version fixes the bug 486326[2], translating the man page to english. Also, this upgrade the package to 3.8.0 policy version, without modifications. Due time problems, It couldn't be done by the sponsor. In this meantime a new upstream version was released. In less than two months in sid, the package has 52 installations, according popcon[3]. Attached you can found the diff between the currently lenny version and this new one. As you can see, Although the diff has 1047 lines, this is a set of little modification in the functions, improving the shell syntax. Several parts is just adding quotes to variable names. the mainstream changelog: - new function zzalfabeto (alphabetic central: roman, military, OTAN, RAF, etc) - new function zzrot13 - code/decode a string in ROT13 - new function zzrot47 - code/decode a string in ROT47 - zzcnpj - better output messages - zzdicasl - Now utilizes zztool texto_em_iso/utf8 to eliminate accentuation problems. - zzdicbabylon - Now utilizes zztool texto_em_iso to eliminate accentuation problems. zznoticiaslinux - Now utilizes zztool texto_em_iso to eliminate accentuation problems. - zztool - new tools to convert iso to utf-8 Please unblock it newly version to propagate into testing. If you need any other info just ask for it. 1- http://packages.qa.debian.org/f/funcoeszz.html 2- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=486326 3- http://qa.debian.org/popcon.php?package=funcoeszz Kind regards, -- Eder L. Marques Just another weekend hacker http://blog.edermarques.net/ | http://www.debian.org/ http://administrando.net/ | http://www.debianbrasil.org/ http://www.fsfla.org/ | http://www.debian-ce.org/
--- funcoeszz-8.3.sh 2008-08-05 13:49:05.000000000 -0300
+++ funcoeszz-8.7.sh 2008-08-05 13:42:39.000000000 -0300
@@ -7,10 +7,10 @@
# Thobias Salazar Trevisan <thobias (a) thobias org>
# DESCRI��O : Funções de uso geral para o shell Bash, que buscam
# informações em arquivos locais e fontes na Internet
-# LICENÃ?A : GPL
+# LICENÃ?A : GPL v2
# CHANGELOG : www.funcoeszz.net/changelog.html
#
-ZZVERSAO=8.3
+ZZVERSAO=8.7
ZZUTF=1
#
##############################################################################
@@ -159,22 +159,22 @@
;;
testa_numero)
# Testa se $2 é um número positivo
- echo "$2" | grep -qs '^[0-9]\{1,\}$'
+ echo "$2" | grep '^[0-9]\{1,\}$' >/dev/null
# TODO Usar em *todas* as funções que recebem números
;;
testa_numero_sinal)
# Testa se $2 é um número (pode ter sinal: -2 +2)
- echo "$2" | grep -qs '^[+-]\{0,1\}[0-9]\{1,\}$'
+ echo "$2" | grep '^[+-]\{0,1\}[0-9]\{1,\}$' >/dev/null
;;
testa_binario)
# Testa se $2 é um número binário
- echo "$2" | grep -qs '^[01]\{1,\}$'
+ echo "$2" | grep '^[01]\{1,\}$' >/dev/null
;;
testa_ip)
# Testa se $2 é um número IP (nnn.nnn.nnn.nnn)
local nnn="\([0-9]\{1,2\}\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)" # 0-255
- echo "$2" | grep -qs "^$nnn\.$nnn\.$nnn\.$nnn$"
+ echo "$2" | grep "^$nnn\.$nnn\.$nnn\.$nnn$" >/dev/null
;;
multi_stdin)
# Mostra na tela os argumentos *ou* a STDIN, nesta ordem
@@ -196,7 +196,23 @@
sed 's/^[[:blank:]]*// ; s/[[:blank:]]*$//'
;;
terminal_utf8)
- echo "$LC_ALL $LC_CTYPE $LANG" | grep -qs -i utf
+ echo "$LC_ALL $LC_CTYPE $LANG" | grep -i utf >/dev/null
+ ;;
+ texto_em_iso)
+ if test $ZZUTF = 1
+ then
+ iconv -f iso-8859-1 -t utf-8 /dev/stdin
+ else
+ cat -
+ fi
+ ;;
+ texto_em_utf8)
+ if test $ZZUTF != 1
+ then
+ iconv -f utf-8 -t iso-8859-1 /dev/stdin
+ else
+ cat -
+ fi
;;
# Ferramentas inexistentes são simplesmente ignoradas
esac
@@ -319,7 +335,7 @@
# Um xunxo bonito: filtra a saÃda da zzajuda, mostrando
# apenas a função informada.
zzajuda |
- grep -C9 "^$padrao\b" |
+ grep -C15 "^$padrao\b" |
sed -n "
H
/^---/ {
@@ -349,13 +365,13 @@
### Todos os comandos necessários estão instalados?
local comando tipo_comando comandos_faltando
- local comandos='awk- bc cat chmod- clear- cp cpp- cut diff- du- find- grep lynx mv od- play- ps- rm sed sleep sort tr uniq'
+ local comandos='awk- bc cat chmod- clear- cp cpp- cut diff- du- find- grep iconv- lynx mv od- play- ps- rm sed sleep sort tail- tr uniq'
for comando in $comandos
do
# Este é um comando essencial ou opcional?
tipo_comando='ESSENCIAL'
- if zztool grep_var - $comando
+ if zztool grep_var - "$comando"
then
tipo_comando='opcional'
comando=${comando%-}
@@ -377,7 +393,7 @@
then
echo
zztool eco "**Atenção**"
- if zztool grep_var ESSENCIAL $comandos_faltando
+ if zztool grep_var ESSENCIAL "$comandos_faltando"
then
echo 'Há pelo menos um comando essencial faltando.'
echo 'Você precisa instalá-lo para usar as Funções ZZ.'
@@ -445,7 +461,7 @@
# Instala as funções no arquivo .bashrc
--bashrc)
- if ! grep -qs "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc"
+ if ! grep "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc" >/dev/null 2>&1
then
(
echo
@@ -466,7 +482,7 @@
arquivo_aliases="$HOME/.zzcshrc"
# Chama o arquivo dos aliases no final do .tcshrc
- if ! grep -qs "^[^#]*$arquivo_aliases" "$tcshrc"
+ if ! grep "^[^#]*$arquivo_aliases" "$tcshrc" >/dev/null 2>&1
then
(
echo
@@ -499,7 +515,7 @@
[ "$ZZUTF" = 1 ] && info_utf8='UTF-8' || info_utf8='ISO-8859-1'
# As funções estão instaladas no bashrc?
- if grep -qs "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc"
+ if grep "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc" >/dev/null 2>&1
then
info_instalado="$bashrc"
else
@@ -617,12 +633,12 @@
zztool uso byte
return
fi
- if ! zztool grep_var $entrada $unidades
+ if ! zztool grep_var $entrada "$unidades"
then
echo "Unidade inválida '$entrada'"
return
fi
- if ! zztool grep_var $saida .$unidades
+ if ! zztool grep_var $saida ".$unidades"
then
echo "Unidade inválida '$saida'"
return
@@ -704,7 +720,7 @@
zzzz -h beep $1 && return
local minutos frequencia
-
+
# Sem argumentos, apenas restaura a "configuração de fábrica" do beep
[ "$1" ] || {
printf '\033[10;750]\033[11;100]\a'
@@ -1042,7 +1058,7 @@
olho 00
aviao --o-0-o--
jacare ==*-,,--,,--
- alien /-=-\
+ alien /-=-\\
rosa --/--\-<@
peixe >-)))-D
siri (_).-=''=-.(_)
@@ -1154,6 +1170,7 @@
# ----------------------------------------------------------------------------
# Conversão de telefones contendo letras para apenas números.
+# Autor: Rodolfo de Faria <rodolfo faria (a) fujifilm com br>
# Uso: zzfoneletra telefone
# Ex.: zzfoneletra 2345-LINUX # Retorna 2345-54689
# echo 5555-HELP | zzfoneletra # Retorna 5555-4357
@@ -1163,12 +1180,147 @@
zzzz -h foneletra $1 && return
# Um Sed faz tudo, é uma tradução letra a letra
- zztool multi_stdin $* |
+ zztool multi_stdin "$@" |
zzmaiusculas |
sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/22233344455566677778889999/
}
+# ----------------------------------------------------------------------------
+# Codifica/decodifica um texto utilizando a cifra ROT13
+# Uso: zzrot13 texto
+# Ex.: zzrot13 texto secreto # Retorna: grkgb frpergb
+# zzrot13 grkgb frpergb # Retorna: texto secreto
+# echo texto secreto | zzrot13 # Retorna: grkgb frpergb
+# ----------------------------------------------------------------------------
+zzrot13 ()
+{
+ zzzz -h rot13 $1 && return
+
+ # Um tr faz tudo, é uma tradução letra a letra
+ # Obs.: Dados do tr entre colchetes para funcionar no Solaris
+ zztool multi_stdin "$@" |
+ tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
+}
+
+
+# ----------------------------------------------------------------------------
+# Codifica/decodifica um texto utilizando a cifra ROT47
+# Uso: zzrot47 texto
+# Ex.: zzrot47 texto secreto # Retorna: E6IE@ D64C6E@
+# zzrot47 E6IE@ D64C6E@ # Retorna: texto secreto
+# echo texto secreto | zzrot47 # Retorna: E6IE@ D64C6E@
+# ----------------------------------------------------------------------------
+zzrot47 ()
+{
+ zzzz -h rot47 $1 && return
+
+ # Um tr faz tudo, é uma tradução letra a letra
+ # Obs.: Os colchetes são parte da tabela, o tr não funcionará no Solaris
+ zztool multi_stdin "$@" |
+ tr '!-~' 'P-~!-O'
+}
+
+
+# ----------------------------------------------------------------------------
+# Central de alfabetos (romano, militar, radiotelefônico, OTAN, RAF, etc).
+# Obs.: Sem argumentos mostra a tabela completa, senão traduz uma palavra.
+#
+# Tipos reconhecidos:
+#
+# --militar | --radio | --fone | --otan | --icao | --ansi
+# Alfabeto radiotelefônico internacional
+# --romano | --latino A B C D E F...
+# --royal-navy Marinha Real - Reino Unido, 1914-1918
+# --signalese Primeira Guerra, 1914-1918
+# --raf24 Força Aérea Real - Reino Unido, 1924-1942
+# --raf42 Força Aérea Real - Reino Unido, 1942-1943
+# --raf Força Aérea Real - Reino Unido, 1943-1956
+# --us Alfabeto militar norte-americano, 1941-1956
+# --portugal Lugares de Portugal
+# --names Nomes de pessoas, em inglês
+# --lapd PolÃcia de Los Angeles (EUA)
+#
+# Uso: zzalfabeto [--TIPO] [palavra]
+# Ex.: zzalfabeto --militar
+# zzalfabeto --militar cambio
+# ----------------------------------------------------------------------------
+zzalfabeto ()
+{
+ zzzz -h alfabeto $1 && return
+
+ local char letra
+
+ local coluna=1
+ local dados="\
+A:Alpha:Apples:Ack:Ace:Apple:Able/Affirm:Able:Aveiro:Alan:Adam
+B:Bravo:Butter:Beer:Beer:Beer:Baker:Baker:Bragança:Bobby:Boy
+C:Charlie:Charlie:Charlie:Charlie:Charlie:Charlie:Charlie:Coimbra:Charlie:Charles
+D:Delta:Duff:Don:Don:Dog:Dog:Dog:Dafundo:David:David
+E:Echo:Edward:Edward:Edward:Edward:Easy:Easy:Ã?vora:Edward:Edward
+F:Foxtrot:Freddy:Freddie:Freddie:Freddy:Fox:Fox:Faro:Frederick:Frank
+G:Golf:George:Gee:George:George:George:George:Guarda:George:George
+H:Hotel:Harry:Harry:Harry:Harry:How:How:Horta:Howard:Henry
+I:India:Ink:Ink:Ink:In:Item/Interrogatory:Item:Itália:Isaac:Ida
+J:Juliet:Johnnie:Johnnie:Johnnie:Jug/Johnny:Jig/Johnny:Jig:José:James:John
+K:Kilo:King:King:King:King:King:King:Kilograma:Kevin:King
+L:Lima:London:London:London:Love:Love:Love:Lisboa:Larry:Lincoln
+M:Mike:Monkey:Emma:Monkey:Mother:Mike:Mike:Maria:Michael:Mary
+N:November:Nuts:Nuts:Nuts:Nuts:Nab/Negat:Nan:Nazaré:Nicholas:Nora
+O:Oscar:Orange:Oranges:Orange:Orange:Oboe:Oboe:Ovar:Oscar:Ocean
+P:Papa:Pudding:Pip:Pip:Peter:Peter/Prep:Peter:Porto:Peter:Paul
+Q:Quebec:Queenie:Queen:Queen:Queen:Queen:Queen:Queluz:Quincy:Queen
+R:Romeo:Robert:Robert:Robert:Roger/Robert:Roger:Roger:Rossio:Robert:Robert
+S:Sierra:Sugar:Esses:Sugar:Sugar:Sugar:Sugar:Setúbal:Stephen:Sam
+T:Tango:Tommy:Toc:Toc:Tommy:Tare:Tare:Tavira:Trevor:Tom
+U:Uniform:Uncle:Uncle:Uncle:Uncle:Uncle:Uncle:Unidade:Ulysses:Union
+V:Victor:Vinegar:Vic:Vic:Vic:Victor:Victor:Viseu:Vincent:Victor
+W:Whiskey:Willie:William:William:William:William:William:Washington:William:William
+X:X-ray/Xadrez:Xerxes:X-ray:X-ray:X-ray:X-ray:X-ray:Xavier:Xavier:X-ray
+Y:Yankee:Yellow:Yorker:Yorker:Yoke/Yorker:Yoke:Yoke:York:Yaakov:Young
+Z:Zulu:Zebra:Zebra:Zebra:Zebra:Zebra:Zebra:Zulmira:Zebedee:Zebra"
+
+ # Escolhe o alfabeto a ser utilizado
+ case "$1" in
+ --militar|--radio|--fone|--telefone|--otan|--nato|--icao|--itu|--imo|--faa|--ansi)
+ coluna=2 ; shift ;;
+ --romano|--latino ) coluna=1 ; shift ;;
+ --royal|--royal-navy ) coluna=3 ; shift ;;
+ --signalese|--western-front ) coluna=4 ; shift ;;
+ --raf24 ) coluna=5 ; shift ;;
+ --raf42 ) coluna=6 ; shift ;;
+ --raf43|--raf ) coluna=7 ; shift ;;
+ --us41|--us ) coluna=8 ; shift ;;
+ --pt|--portugal ) coluna=9 ; shift ;;
+ --name|--names ) coluna=10 ; shift ;;
+ --lapd ) coluna=11 ; shift ;;
+ esac
+
+ if test "$1"
+ then
+ # Texto informado, vamos fazer a conversão
+ # Deixa uma letra por linha e procura seu código equivalente
+ echo $* |
+ zzmaiusculas |
+ sed 's/./&\
+ /g' |
+ while read char
+ do
+ letra=$(echo "$char" | sed 's/[^A-Z]//g')
+ if test "$letra"
+ then
+ echo "$dados" | grep "^$letra" | cut -d : -f $coluna
+ else
+ echo "$char"
+ fi
+ done
+ else
+ # Apenas mostre a tabela
+ echo "$dados" | cut -d : -f $coluna
+ fi
+}
+
+
# ----------------------------------------------------------------------------
# #### A R Q U I V O S
@@ -1196,7 +1348,7 @@
# O arquivo existe?
zztool arquivo_legivel "$arquivo" || continue
- # Remove o famigerado CR \r ^M
+ # Remove o famigerado CR \r ^M
cp "$arquivo" "$tmp" &&
tr -d '\015' < "$tmp" > "$arquivo"
@@ -1384,7 +1536,7 @@
# Um teste rápido para saber se o arquivo tem a palavra antiga,
# evitando gravar o temporário desnecessariamente
- grep -qs "$antiga" "$arquivo" || continue
+ grep "$antiga" "$arquivo" >/dev/null 2>&1 || continue
# Uma seqüência encadeada de comandos para garantir que está OK
cp "$arquivo" "$tmp" &&
@@ -1474,7 +1626,7 @@
s/[\"']//g
# HÃfens no inÃcio do nome são proibidos
- s/^-/_/
+ s/^-/_/
# Remove acentos
y/à áâãäåèéêëìÃîïòóôõöùúûü/aaaaaaeeeeiiiiooooouuuu/
@@ -1652,6 +1804,7 @@
{
zzzz -h diffpalavra $1 && return
+ local esc
local tmp1="$ZZTMP.diffpalavra.1.$$"
local tmp2="$ZZTMP.diffpalavra.2.$$"
local n=$(printf '\a')
@@ -1669,7 +1822,7 @@
# Usa o diff para comparar as diferenças e formata a saÃda,
# agrupando as palavras para facilitar a leitura do resultado
- diff -U 100 "$tmp1" "$tmp2" |
+ diff -U 100 "$tmp1" "$tmp2" |
sed 's/^ /=/' |
sed '
# Script para agrupar linhas consecutivas de um mesmo tipo.
@@ -1926,10 +2079,10 @@
# Uso: zzlinha [número | -t texto] [arquivo(s)]
# Ex.: zzlinha /etc/passwd # mostra uma linha qualquer, aleatória
# zzlinha 9 /etc/passwd # mostra a linha 9 do arquivo
+# zzlinha -2 /etc/passwd # mostra a penúltima linha do arquivo
# zzlinha -t root /etc/passwd # mostra uma das linhas com "root"
# cat /etc/passwd | zzlinha # o arquivo pode vir da entrada padrão
# ----------------------------------------------------------------------------
-# TODO números negativos (conta à partir do fim)
zzlinha ()
{
zzzz -h linha $1 && return
@@ -1944,7 +2097,7 @@
fi
# Talvez o $1 é o número da linha desejada?
- if zztool testa_numero "$1"
+ if zztool testa_numero_sinal "$1"
then
n=$1
shift
@@ -1956,9 +2109,19 @@
# Nota: Suporte a múltiplos arquivos e entrada padrão (STDIN)
for arquivo in "${@:--}"
do
- sed -n ${n}p "$arquivo"
+ # O arquivo existe?
+ zztool arquivo_legivel "$arquivo" || continue
+
+ if [ "$n" -lt 0 ]
+ then
+ tail -n ${n#-} "$arquivo" | sed 1q
+ else
+ sed -n ${n}p "$arquivo"
+ fi
done
else
+ # TODO: usar zztool multi_stdin e arquivo_legivel
+
# Se foi informado um padrão (ou nenhum argumento),
# primeiro grepa as linhas, depois mostra uma linha
# aleatória deste resultado.
@@ -1972,6 +2135,33 @@
}
+# ----------------------------------------------------------------------------
+# Desordena as linhas de um texto (ordem aleatória)
+# Uso: zzshuffle [arquivo(s)]
+# Ex.: zzshuffle /etc/passwd # desordena o arquivo de usuários
+# cat /etc/passwd | zzlinha # o arquivo pode vir da entrada padrão
+# ----------------------------------------------------------------------------
+zzshuffle ()
+{
+ zzzz -h shuffle $1 && return
+
+ local linha
+
+ # Suporte a múltiplos arquivos (cat $@) e entrada padrão (cat -)
+ cat "${@:--}" |
+
+ # Um número aleatório é colocado no inÃcio de cada linha,
+ # depois o sort ordena numericamente, bagunçando a ordem
+ # original. Então os números são removidos.
+ while read linha
+ do
+ echo "$RANDOM $linha"
+ done |
+ sort |
+ cut -d ' ' -f 2-
+}
+
+
# ----------------------------------------------------------------------------
# #### C Ã? L C U L O
@@ -1980,7 +2170,7 @@
# ----------------------------------------------------------------------------
# Calculadora.
-# Os operadores principais são + - / * ^ %, veja outros em "man bc".
+# Os operadores principais são + - / * ^ %, veja outros em "man bc".
# Obs.: Números fracionados podem vir com vÃrgulas ou pontos: 1,5 ou 1.5.
# Uso: zzcalcula número operação número
# Ex.: zzcalcula 2,20 + 3.30 # vÃrgulas ou pontos, tanto faz
@@ -1991,7 +2181,7 @@
{
zzzz -h calcula $1 && return
- local parametros=$(zztool multi_stdin $*)
+ local parametros=$(zztool multi_stdin "$@")
# Entrada de números com vÃrgulas ou pontos, saÃda sempre com vÃrgulas
echo "scale=2;$parametros" | sed y/,/./ | bc | sed y/./,/
@@ -2170,7 +2360,7 @@
# Uso: zzhora [-r] hh:mm [+|- hh:mm]
# Ex.: zzhora 8:30 + 17:25 # preciso somar duas horas!
# zzhora 12:00 - agora # quando falta para o almoço?
-# zzhora -12:00 + -5:00 # horas negativas!!!
+# zzhora -12:00 + -5:00 # horas negativas!
# zzhora 1000 # quanto é 1000 minutos?
# zzhora -r 5:30 - 8:00 # que horas ir dormir para acordar às 5:30?
# zzhora -r agora + 57:00 # e daqui 57 horas, será quando?
@@ -2256,6 +2446,7 @@
[ $mm -le 9 ] && mm=0$mm
[ $hh_dia -le 9 ] && hh_dia=0$hh_dia
+ #TODO: usar um exemplo com horas negativas
# Decide como mostrar o resultado para o usuário.
#
# Relativo:
@@ -2416,7 +2607,7 @@
local i n somatoria digito1 digito2 cpf base
# Remove pontuação do CPF informado, deixando apenas números
- cpf="$(echo $* | tr -d -c 0-9)"
+ cpf="$(echo $* | tr -d -c 0123456789)"
# Extrai os números da base do CPF:
# Os 9 primeiros, sem os dois dÃgitos verificadores.
@@ -2430,7 +2621,7 @@
return
fi
- # Apaga os dois último dÃgitos
+ # Apaga os dois últimos dÃgitos
base=${cpf%??}
else
# Não foi informado nenhum CPF, vamos gerar um escolhendo
@@ -2519,7 +2710,7 @@
echo CPF válido
else
# Boa ação do dia: mostrar quais os verificadores corretos
- echo "CPF inválido (-$digito1$digito2)"
+ echo "CPF inválido (deveria terminar em $digito1$digito2)"
fi
fi
}
@@ -2547,7 +2738,7 @@
# apenas com uma máscara numérica maior, devido à quantidade
# maior de dÃgitos do CNPJ em relação ao CPF.
- cnpj="$(echo $* | tr -d -c 0-9)"
+ cnpj="$(echo $* | tr -d -c 0123456789)"
if [ "$cnpj" ]
then
@@ -2613,7 +2804,8 @@
then
echo CNPJ válido
else
- echo "CNPJ inválido (-$digito1$digito2)"
+ # Boa ação do dia: mostrar quais os verificadores corretos
+ echo "CNPJ inválido (deveria terminar em $digito1$digito2)"
fi
fi
}
@@ -2887,9 +3079,9 @@
# zzbovespa ()
# {
# zzzz -h bovespa $1 && return
-#
+#
# local url='http://www.bovespa.com.br/'
-#
+#
# [ "$1" ] || {
# $ZZWWWDUMP "$url/Indices/CarteiraP.asp?Indice=Ibovespa" |
# sed '/^ *Cód/,/^$/!d'
@@ -2913,12 +3105,12 @@
# s/\n/ /
# b
# }
-#
+#
# /^IBO/ N
# N
# s/\n/ /g
# /^<.-- /d
-#
+#
# :a
# s/^\([^0-9]\{1,10\}\)\([0-9][0-9]*\)/\1 \2/
# ta'
@@ -2974,6 +3166,7 @@
/^Views$/,$ d
/^Vistas$/,$ d
/^ #Wikipedia (/d
+ /^ #Editar Wikipedia /d
/^From Wikipedia,/d
/^Origem: Wikipédia,/d
/^ Jump to: /d
@@ -2983,7 +3176,7 @@
/^ Wikipedia does not have an article with this exact name./q
s/^\[edit\] //
s/^\[editar\] //
-
+
# Guarda URL da página e mostra no final, após Categorias
/^ Obtido em "/ { H; d; }
/^ Retrieved from "/ { H; d; }
@@ -3007,7 +3200,7 @@
# local url='http://www.receita.fazenda.gov.br/Scripts/srf/irpf'
# local ano=$1
# local z=${ano#200}
-#
+#
# # Verificação dos parâmetros
# [ "$2" ] || { zztool uso irpf; return; }
#
@@ -3031,14 +3224,14 @@
# zzcep ()
# {
# zzzz -h cep $1 && return
-#
+#
# local r c
# local url='http://www.correios.com.br/servicos/cep'
# local e="$1"
-#
+#
# # Verificação dos parâmetros
# [ "$3" ] || { zztool uso cep; return; }
-#
+#
# c=$(echo "$2"| sed "$ZZSEDURL")
# shift
# shift
@@ -3064,29 +3257,29 @@
# zzdetranpr ()
# {
# zzzz -h detranpr $1 && return
-#
+#
# local url='http://celepar7.pr.gov.br/detran_novo/consultas/veiculos/deb_novo.asp'
-#
+#
# # Verificação dos parâmetros
# [ "$1" ] || { zztool uso detranpr; return; }
-#
+#
# # Faz a consulta e filtra o resultado (usando magia negra)
# $ZZWWWDUMP "$url?ren=$1" |
# sed 's/^ *//' |
# sed '
# # Remove linhas em branco
# /^$/ d
-#
+#
# # Transforma barra horizontal em linha em branco
# s/___*//
-#
+#
# # Apaga a lixarada
# 1,/^Data: / d
# /^Informa..es do Ve.culo/ d
# /^Discrimina..o dos D.bitos/ d
# /\[BUTTON\]/,$ d
# /^Discrimina..o das Multas/,/^Resumo das Multas/ d
-#
+#
# # Quebra a linha para dados da segunda coluna da tabela
# s/Renavam:/@&/
# s/Ano de Fab/@&/
@@ -3157,7 +3350,7 @@
dump=$($ZZWWWDUMP "$url/$tipo/${tipo}_pesquisa.asp" |
tr -d \\n |
- sed 's/ */ /g ; s/^ //')
+ sed 's/ */ /g ; s/^ //')
# O número do concurso é sempre o primeiro campo
numero_concurso=$(echo "$dump" | cut -d '|' -f 1)
@@ -3438,6 +3631,7 @@
# Faz a consulta e filtra o resultado
zztool eco "$url"
$ZZWWWHTML "$url" |
+ zztool texto_em_iso |
grep -i $opcao_grep "$*" |
sed -n 's@^<LI><A HREF=\([^>]*\)> *\([^ ].*\)</A>@\1: \2@p'
}
@@ -3461,7 +3655,7 @@
[ "$1" ] || { zztool uso whoisbr; return; }
# Faz a consulta e filtra o resultado
- $ZZWWWDUMP "$url?qr=$dominio" |
+ $ZZWWWDUMP "$url?qr=$dominio" |
sed '
s/^ *//
1,/^%/d
@@ -3563,7 +3757,7 @@
[ "$1" ] && sites="$1"
# Yahoo
- if zztool grep_var y $sites
+ if zztool grep_var y "$sites"
then
url='http://br.news.yahoo.com/tecnologia/linux'
echo
@@ -3575,16 +3769,14 @@
s,</a>.*,,
s/<[^>]*>//gp
}
- /clearfix/ {
- n
- s/<[^>]*>//gp
- }' |
+ /^ <a href=/ s/<[^>]*>//gp' |
sed 's/^[[:blank:]]*//' |
+ zztool texto_em_utf8 |
$limite
fi
# Viva o Linux
- if zztool grep_var v $sites
+ if zztool grep_var v "$sites"
then
url='http://www.vivaolinux.com.br'
echo
@@ -3595,11 +3787,12 @@
$ZZWWWHTML "$url/index.rdf" |
sed -n '1,/<item>/d;s@.*<title>\(.*\)</title>@\1@p' |
+ zztool texto_em_utf8 |
$limite
fi
# Cipsga
- if zztool grep_var c $sites
+ if zztool grep_var c "$sites"
then
url='http://www.cipsga.org.br'
echo
@@ -3613,35 +3806,39 @@
fi
# Br Linux
- if zztool grep_var b $sites
+ if zztool grep_var b "$sites"
then
url='http://br-linux.org/feed/'
echo
zztool eco "* BR Linux ($url):"
$ZZWWWHTML "$url" |
sed -n '1,/<item>/d ; s/.*<title>// ; s@</title>@@p' |
+ sed 's/̶[01];/"/g' |
+ zztool texto_em_utf8 |
$limite
fi
# UnderLinux
- if zztool grep_var u $sites
+ if zztool grep_var u "$sites"
then
url='http://feeds.feedburner.com/underlinux'
echo
zztool eco "* UnderLinux ($url):"
$ZZWWWHTML "$url" |
sed -n '1,/<item>/d ; s/.*<title>// ; s@</title>@@p' |
+ zztool texto_em_utf8 |
$limite
fi
# NotÃcias Linux
- if zztool grep_var n $sites
+ if zztool grep_var n "$sites"
then
url='http://www.noticiaslinux.com.br'
echo
zztool eco "* NotÃcias Linux ($url):"
$ZZWWWHTML "$url" |
sed -n '/<[hH]3>/{s/<[^>]*>//g;s/^[[:blank:]]*//g;p;}' |
+ zztool texto_em_iso |
$limite
fi
}
@@ -3674,7 +3871,7 @@
[ "$1" ] && sites="$1"
# Freshmeat
- if zztool grep_var f $sites
+ if zztool grep_var f "$sites"
then
url='http://freshmeat.net'
echo
@@ -3685,7 +3882,7 @@
fi
# Slashdot
- if zztool grep_var s $sites
+ if zztool grep_var s "$sites"
then
url='http://slashdot.org'
echo
@@ -3697,7 +3894,7 @@
fi
# Newsforge
- if zztool grep_var n $sites
+ if zztool grep_var n "$sites"
then
url='http://www.newsforge.com'
echo
@@ -3709,7 +3906,7 @@
fi
# Linux Today
- if zztool grep_var t $sites
+ if zztool grep_var t "$sites"
then
url='http://linuxtoday.com/backend/biglt.rss'
echo
@@ -3720,7 +3917,7 @@
fi
# LWN
- if zztool grep_var w $sites
+ if zztool grep_var w "$sites"
then
url='http://lwn.net/Articles'
echo
@@ -3731,7 +3928,7 @@
fi
# OS News
- if zztool grep_var o $sites
+ if zztool grep_var o "$sites"
then
url='http://osnews.com'
echo
@@ -3770,18 +3967,19 @@
[ "$1" ] && sites="$1"
# LinuxSecurity Brasil
- if zztool grep_var b $sites
+ if zztool grep_var b "$sites"
then
url='http://www.linuxsecurity.com.br/share.php'
echo
zztool eco "* LinuxSecurity Brasil ($url):"
$ZZWWWHTML "$url" |
sed -n '/item/,$ s@.*<title>\(.*\)</title>@\1@p' |
+ zztool texto_em_iso |
$limite
fi
# Linux Security
- if zztool grep_var s $sites
+ if zztool grep_var s "$sites"
then
url='http://www.linuxsecurity.com/linuxsecurity_advisories.rdf'
echo
@@ -3792,7 +3990,7 @@
fi
# CERT/CC
- if zztool grep_var c $sites
+ if zztool grep_var c "$sites"
then
url='http://www.us-cert.gov/channels/techalerts.rdf'
echo
@@ -3803,7 +4001,7 @@
fi
# Linux Today - Security
- if zztool grep_var t $sites
+ if zztool grep_var t "$sites"
then
url='http://linuxtoday.com/security/index.html'
echo
@@ -3814,7 +4012,7 @@
fi
# Security Focus
- if zztool grep_var f $sites
+ if zztool grep_var f "$sites"
then
url='http://www.securityfocus.com/bid'
echo
@@ -3847,6 +4045,7 @@
local url limite distros
local n=5
+ local ano=$(date '+%Y')
local distros='debian fedora freebsd gentoo mandriva slackware suse ubuntu'
limite="sed ${n}q"
@@ -3854,7 +4053,7 @@
[ "$1" ] && distros="$(echo $* | zzminusculas)"
# Debian
- if zztool grep_var debian $distros
+ if zztool grep_var debian "$distros"
then
url='http://www.debian.org'
echo
@@ -3869,11 +4068,11 @@
fi
# Slackware
- if zztool grep_var slackware $distros
+ if zztool grep_var slackware "$distros"
then
echo
zztool eco '** Atualizações Slackware'
- url='http://www.slackware.com/security/list.php?l=slackware-security&y=2005'
+ url="http://www.slackware.com/security/list.php?l=slackware-security&y=$ano"
echo "$url"
$ZZWWWDUMP "$url" |
sed '
@@ -3884,7 +4083,7 @@
fi
# Gentoo
- if zztool grep_var gentoo $distros
+ if zztool grep_var gentoo "$distros"
then
echo
zztool eco '** Atualizações Gentoo'
@@ -3902,7 +4101,7 @@
fi
# Mandriva
- if zztool grep_var mandriva $distros
+ if zztool grep_var mandriva "$distros"
then
echo
zztool eco '** Atualizações Mandriva'
@@ -3919,7 +4118,7 @@
fi
# Suse
- if zztool grep_var suse $distros
+ if zztool grep_var suse "$distros"
then
echo
zztool eco '** Atualizações Suse'
@@ -3931,7 +4130,7 @@
fi
# Fedora
- if zztool grep_var fedora $distros
+ if zztool grep_var fedora "$distros"
then
echo
zztool eco '** Atualizações Fedora'
@@ -3943,7 +4142,7 @@
fi
# FreeBSD
- if zztool grep_var freebsd $distros
+ if zztool grep_var freebsd "$distros"
then
echo
zztool eco '** Atualizações FreeBSD'
@@ -3960,7 +4159,7 @@
fi
# Ubuntu
- if zztool grep_var ubuntu $distros
+ if zztool grep_var ubuntu "$distros"
then
url='http://www.ubuntu.com/taxonomy/term/2/0/feed'
echo
@@ -4048,7 +4247,7 @@
#
# local padrao=$(echo "$*" | sed "$ZZSEDURL")
# local url=http://letssingit.com/cgi-exe/am.cgi
-#
+#
# # Verificação dos parâmetros
# [ "$1" ] || { zztool uso letrademusica; return; }
#
@@ -4074,10 +4273,10 @@
#
# local a c h
# local url='http://tudoparana.globo.com/gazetadopovo/cadernog'
-#
+#
# # Verificação dos parâmetros
# [ "$1" ] || { zztool uso tv; return; }
-#
+#
# h=$(echo $2 | sed 's/^\(..\).*/\1/;s/[^0-9]//g')
# h="($h|$((h+1))|$((h+2)))"
# h=$(echo $h | sed 's/24/00/;s/25/01/;s/26/02/;s/\<[0-9]\>/0&/g;s@[(|)]@\\\\&@g')
@@ -4124,7 +4323,7 @@
grep '\*\*\*\*' |
sed '
s/more info from.*//
- s/\[go\.gif\]//
+ s/\[[a-z0-9]*\.gif\]//
s/ *$//
s/^ *\*\** *//'
}
@@ -4162,7 +4361,7 @@
# Extrai o nome do arquivo no site do dicionário
wav_file=$(
$ZZWWWHTML "$url?va=$palavra" |
- sed -n "/.*audio.pl?\([a-z0-9]*\.wav\)=$palavra.*/{s//\1/p;q;}")
+ sed -n "/.*audio.pl?\([a-z0-9]*\.wav\)=$palavra.*/{s//\1/p;q;}")
# Ops, não extraiu nada
if test -z "$wav_file"
@@ -4174,7 +4373,7 @@
# O nome da pasta é a primeira letra do arquivo (/a/apple001.wav)
# Ou "number" se iniciar com um número (/number/9while01.wav)
wav_dir=$(echo $wav_file | cut -c1)
- echo $wav_dir | grep -qs '[0-9]' && wav_dir='number'
+ echo $wav_dir | grep '[0-9]' >/dev/null && wav_dir='number'
# Compõe a URL do arquivo e salva-o localmente (cache)
wav_url="$url2/$wav_dir/$wav_file"
@@ -4376,13 +4575,13 @@
# local subj=zznextel
# local from="$1"
# local to="$2"
-#
+#
# # Verificação dos parâmetros
# [ "$3" ] || { zztool uso nextel; return; }
-#
+#
# shift; shift
# msg=$(echo "$*" | sed "$ZZSEDURL")
-#
+#
# echo "to=$to&from=$from&subject=$subj&message=$msg&count=0&Enviar=Enviar" |
# $ZZWWWPOST "$url" |
# sed '1,/^ *CENTRAL/d ; s/.*Individual/ / ; N ; q'
@@ -4417,10 +4616,8 @@
zzzz -h dicbabelfish $1 && return
local padrao
- local url='http://babelfish.altavista.com/babelfish/tr'
- local extra='ienc=iso-8859-1&doit=done&tt=urltext&intl=1'
- local ini='^.*<div style=padding[^>]*>'
- local fim='^<\/div>'
+ local url='http://babelfish.yahoo.com/translate_txt'
+ local extra='ei=UTF-8&eo=UTF-8&doit=done&fr=bf-home&intl=1&tt=urltext'
local lang=en_pt
# Verificação dos parâmetros
@@ -4437,16 +4634,12 @@
fi
padrao=$(echo "$*" | sed "$ZZSEDURL")
- $ZZWWWHTML "$url?$extra&urltext=$padrao&lp=$lang" |
- sed -n "
- /$ini/,/$fim/ {
- /$fim/d
- /^$/d
- /$ini/ {
- s/<[^>]*>//g
- s/^...//p
- }
- }"
+ $ZZWWWHTML "$url?$extra&trtext=$padrao&lp=$lang" |
+ sed -n '
+ /<div id="result">/ {
+ s/<[^>]*>//g
+ s/^ *//p
+ }'
}
@@ -4482,7 +4675,8 @@
/SEARCH RESULT/,/<\/td>/!d
s/^[$tab ]*//
s/<[^>]*>//g
- /^$/d"
+ /^$/d" |
+ zztool texto_em_iso
}
@@ -4515,6 +4709,8 @@
/$ini/,/$fim/ {
/$ini/d
/$fim/d
+ /Duplo clique nas palavras/d
+ /^ *$/d
p
}" |
sed '
Attachment:
signature.asc
Description: OpenPGP digital signature