🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #6478

Re: Conocer si un script se ha llamado a sí mismo

#6478
From: sio2
Date: Tue, 10 Jun 2003 16:56
94 lines
5060 bytes
El martes, 10 de junio de 2003, a las 14:45 GMT, Jes�s M NAVARRO escribi�:

> [...] 
> Quiz� fuese mejor que contases qu� pretendes conseguir, porque parece que tu
> entorno est� pidiendo a gritos el uso de archivos de bloqueo

Lo que quiero es cepillarme los mensajes de correo que me llegan de
determinados amigos, porque en el 99% de los casos son chistes que no me
interesan. Pero, como puede que me env�en algo de inter�s, quiero recibir
en mi buz�n un mensaje de aviso con un resumencito de lo que conten�a el
archivo. Algo as�:


   Remitente: Fulano de tal
   Asunto: Fw: Soplapollez n�mero 1234 y sumando
   Fecha: <la que contiene el campo Date>
  
   Ficheros adjuntos:
     [I] <sin nombre>       text/plain                    0,1K
     [A] chistecito.pps     application/msppoint        500,0K

La letra entre corchetes indica si esa parte del mensaje es un adjunto o
no. El que use mutt, ver� que he copiado miserablemente su formato al
pulsar la letra 'v'.

Ya lo tengo hecho as�:

Recojo el mensaje (que por el filtro de procmail s� que contiene
adjuntos) y leo el valor del boundary de la cabecera, para poder saber
cu�l es el separador de las distintas partes de que se compone.

Para separar cada parte uso awk:

#v+

awk -v RS="--$BOUNDARY\n" -v FS="\n" ' {
  print $0 | COMANDO " " NR
    close(COMANDO " " NR)
}' COMANDO="$COMANDO" $ARCHIVO

#v-

En este trozo de c�digo BOUNDARY es la variable del script que contiene
el valor de boundary y COMANDO es un segundo script de bash que se
encarga de procesar cada parte.

Para el curioso, al segundo script le paso NR para saber si estoy
tratando la cabecera del mensaje (cuando NR=1), en cuyo caso lo que tengo
que generar es "Remitente: etc...", u otra parte cualquiera del mensaje,
en cuyo caso lo que debo hacer es generar cada una de las l�neas "[I]
etc..."

Hasta aqu� todo bien y funciona perfectamente. Sin embargo, hay un caso
especial en que no me hace un resumen fet�n: cuando me env�an un mensaje
con adjuntos y el cuerpo del mensaje en formato texto y en formato HTML.

En ese caso mi resumen ser�a:

   Ficheros adjuntos:
    [I] <sin nombre>              multipart/alternative       0,4K
    [A] foto.jpg                  image/jpeg                 45,0K

Pero a m� me gustar�a que fuese:

  Fichero adjuntos:
    [I] <sin nombre>              multipart/alternative
      [I] <sin nombre>            text/plain                  0,1K
      [I] <sin nombre>            text/html                   0,3K
    [A] foto.jpg                  image/jpeg                 45,0K

He visto que en el caso que explico ahora la parte que es
multipart/alternative contiene en la cabecera otro boundary distinto que
sirve para separar la parte text/plain de la parte text/html. As� que he
pensado llamar de nuevo al primer script pas�ndole como mensaje s�lo
esta parte multipart/alternative. Sin embargo, he de saber que existe un
script padre que est� corriendo porque:

* en este caso no hay que procesar la cabecera para extraer remitente,
etc...
* la sangr�a de las l�neas de resumen es mayor.

La verdad es que creando un fichero y comprobando que existe o no,
solucionar�a el problema; porque ya no hay m�s subniveles. Quiero decir,
dentro de un multipart/alternative no volver� a encontrarme otro
multipart/alternative.

Gracias a todos por el inter�s.

-- 
Tu dulce habla, �en c�ya oreja suena?
                  --- Garcilaso de la Vega ---
   Si     Di�xido de Silicio |        Debian GNU/Linux 
  /  \         (SiO2)        |    Jos� Miguel S�nchez Al�s
 O    O   Mineral de Cuarzo  |  sio2.arr@ba.online.fr | URL #257033
Technical Details
Message-ID: <slrnbec3e8.tjo.sio2.arr@cebolleta.net.dhis.org>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!22.red-80-37-129.pooles.rima-tde.NET!not-for-mail
References: <slrnbe9djd.5nd.sio2.arr@cebolleta.net.dhis.org> <874r2z2jgb.fsf@thalassa.informatimago.com> <slrnbe9o73.9t5.sio2.arr@cebolleta.net.dhis.org> <8765nex5ab.fsf@thalassa.informatimago.com> <bc32c8$5j1$1@nsnmrro2-gest.nuria.telefonica-data.net> <slrnbeb4u3.m6c.sio2.arr@cebolleta.net.dhis.org> <tg7hr-qgl.ln1@mithrandir.intranet>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,9e3b5a3ca8b4d64b
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-06-10 10:00:40 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!22.red-80-37-129.pooles.rima-tde.NET!not-for-mail
From: sio2 <sio2.arr@ba.online.fr>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Conocer si un script se ha llamado a sí
 mismo
Date: Tue, 10 Jun 2003 18:56:41 +0200
Lines: 94
Message-ID: <slrnbec3e8.tjo.sio2.arr@cebolleta.net.dhis.org>
References: <slrnbe9djd.5nd.sio2.arr@cebolleta.net.dhis.org> <874r2z2jgb.fsf@thalassa.informatimago.com> <slrnbe9o73.9t5.sio2.arr@cebolleta.net.dhis.org> <8765nex5ab.fsf@thalassa.informatimago.com> <bc32c8$5j1$1@nsnmrro2-gest.nuria.telefonica-data.net> <slrnbeb4u3.m6c.sio2.arr@cebolleta.net.dhis.org> <tg7hr-qgl.ln1@mithrandir.intranet>
Reply-To: sio2.arr@ba.online.fr
NNTP-Posting-Host: 22.red-80-37-129.pooles.rima-tde.net (80.37.129.22)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1055264438 15823741 80.37.129.22 (16 [113866])
X-Orig-Path: cebolleta.net.dhis.org!news
User-Agent: slrn/0.9.7.4 (Linux)