[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Request for a exception for funcoeszz



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/&#822[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


Reply to: