[eside-ghost] Sopitas con programa en C
Jose Antonio Fernandes Salvador
eside-ghost@deusto.es
Fri, 01 Aug 2003 10:55:45 +0200
--=====================_7564497==_
Content-Type: text/plain; charset="iso-8859-1"; format=flowed
Content-Transfer-Encoding: 8bit
Sopitas con C
Hace como 7 años que no programo en c y tengo que hacer un programa que
recoge de un pipe los mensages enviados desde syslog y los almacena en una
bd. Llevo un par de días intentando partir el mensaje que recibo en sus 4
partes:
Fecha, host, aplicacion y mensaje. Pero he llegado a un punto que no se
seguir. Estoi un poco desesperado por que el programita debería ser una
tontería y consigo terminarlo.
A ver si alguien le pilla el error:
Compila bien. El programa casca con un: Segmentation fault. Linea 123.
Justo despues de sacar el mensaje "Punto 2 bis".
Básicamente lo que estoy intentado en ese bucle es detectar un salto de
linea que seria el fin de una entrada syslog. Despues intento separar las
distintas partes del mensaje para almacenarlo despues en una BD postgresql.
Por si alguien lo quiere probar:
Crear el pipe antes de que se arranque syslog:
Crear un script en /etc/init.d con:
mkfifo /tmp/myLog.pipe
Y hacer un link /etc/rc2.d/S05logtodb con:
ln -s /etc/init.d/logtdb /etc/rc2.d/S05logtodb
Que syslog escriba en el pipe:
Añadir la linea: *.* ¦/tmp/myLog.pipe
Jose Antonio Fernandes Salvador varelse@euskalnet.net
Ayudante de producción
LA HACERIA arte eszenikoak
Ribera de Deusto 43
48014 Bilbao
Tel. y FAX: 94 4470465
Móvil: 655 701442/1
--=====================_7564497==_
Content-Type: text/plain; name="PARSEAND.C";
x-mac-type="42494E41"; x-mac-creator="74747874"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="PARSEAND.C"
I2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5o
PgojaW5jbHVkZSA8Y3R5cGUuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDx1bmlzdGQu
aD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzaWduYWwuaD4KI2luY2x1ZGUgPHRpbWUu
aD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUg
PHN5cy90aW1lLmg+CgojZGVmaW5lIEVSUl9OT1JNQUwJCQkwCQkvKiBOb3JtYWwgZXhpdC4gKi8K
I2RlZmluZSBFUlJfRklGT1NUQVQJCS0xCQkvKiBFcnJvciB3aGVuIGNoZWNraW5nIEZJRk8gd2l0
aCBzdGF0KCkuICovCiNkZWZpbmUgRVJSX0ZJRk9FWElTVFMJCS0yCQkvKiBUaGUgRklGTyBhbHJl
YWR5IGV4aXN0cy4gKi8KI2RlZmluZSBFUlJfRklGT0NSRUFURQkJLTMJCS8qIENvdWxkIG5vdCBj
cmVhdGUgRklGTy4gKi8KI2RlZmluZSBFUlJfRklGT09QRU4JCS00CQkvKiBDb3VsZCBub3Qgb3Bl
biBGSUZPLiAqLwojZGVmaW5lIEVSUl9GSUZPUkVBRAkJLTUJCS8qIENvdWxkIG5vdCByZWFkIHRo
ZSBGSUZPLiAqLwoKCiNkZWZpbmUgVFJVRSAxCiNkZWZpbmUgRkFMU0UgMAoKI2RlZmluZSBDUiAn
XHInCiNkZWZpbmUgTEYgJ1xuJwojZGVmaW5lIENSTEYgJ1xyXG4nCiNkZWZpbmUgQlVGRkVSU0la
RSAxMDI0CgoKCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKCglzdHJ1Y3QgbWVz
c2FnZSB7CgkJY2hhciAqdGltZTsKCQljaGFyICpob3N0OwoJCWNoYXIgKmFwbGljOwoJCWNoYXIg
Km1lc3M7Cgl9OwoKCQoJCgkvLyBOYW1lZCBQaXBlIG1hbmFnZW1lbnQuCglpbnQgZmRQaXBlOwkJ
CQkJLy8gTmFtZWQgUGlwZSBmaWxlIGRlc2NyaXB0b3IKCWNoYXIgY1BpcGVbXT0gIi90bXAvbXlM
b2cucGlwZSI7CgkgCgkKCXNpemVfdCBpQnl0ZXNMZWZ0QnVmZmVyPTA7CQkJLy8gRXh0cmEgYnl0
ZXMgcmVhZCBvZiB0aGUgbmV4dCBtZXNzYWdlCgljaGFyIGNCdWZmZXJbQlVGRkVSU0laRV07CQkJ
Ly8gUmVhZCBidWZmZXIKCWNoYXIgKmNwQnVmZmVyT2Zmc2V0ID0gY0J1ZmZlcjsJCS8vIEVuZCBv
ZiBkYXRhIGluIHRoZSBidWZmZXIKCWludCBpUmVhZGVkQnl0ZXM7CQkJCS8vIE51bWJlciBvZiBi
eXRlcyByZWFkIGZyb20gdGhlIHBpcGUKCQoJY2hhciAqY3BFT0w7CQkJCQkvLyBNYXJrIGZvciB0
aGUgZW5kIG9mIHRoZSBsaW5lCgkKCWNoYXIgKmJ1ZjsKCWludCBuYnl0ZXM9NTsKCWludCBucmVh
ZDsKCQoJLy9BdXggdmFyaWFibGVzIHRvIHBhcnNlIHRoZSBtZXNzYWdlIGludG8gaGlzIHBhcnRz
CglpbnQgcG9zOwoJaW50IHBvc0ZpbjsKCWludCAqc3RyRW5kaW5nOwoJY2hhciAqY3BCZWdpbjsK
CWNoYXIgKmVzcGFjaW8gPSAiICI7CgkNCgkKCS8vT3BlbiB0aGUgTmFtZWQgUGlwZS4gSXQgaXMg
b3BlbiB0byB3cml0ZSB0b28gdG8gYXZvaWQgdG8gcmVjZWl2ZSBhIEVPRiBpZiB0aGUgd3JpdGlu
ZyBwcm9jZXNzIGhhcyBub3Qgc3RhcnRlZCB5ZXQKCWlmICggKGZkUGlwZSA9IG9wZW4oY1BpcGUs
IE9fUkRXUikpIDwgMCApIHsKCQlwcmludGYoIlRoZSBOYW1lZCBQaXBlIFslc10gY291bGQgbm90
IGJlIG9wZW5lZC5cbiIsIGNQaXBlKTsKCQkJCQkJCgl9IGVsc2UgewoJCXByaW50ZigiUHVudG8g
LTVcbiIpOwoJCXByaW50ZigiUGlwZSBvcGVuZWQ6XG4iLCBjUGlwZSk7CgkJcHJpbnRmKCJQdW50
byAtNFxuIik7CgkJCgkJCgkJd2hpbGUgKDEpIHsKCQkvLyBSZWFkIHRoZSBwaXBlCgkJCXByaW50
ZigiUHVudG8gLTNcbiIpOwoJCQl3aGlsZSAoKGlSZWFkZWRCeXRlcyA9IHJlYWQoZmRQaXBlLGNw
QnVmZmVyT2Zmc2V0LCAoQlVGRkVSU0laRSAtIGlCeXRlc0xlZnRCdWZmZXIpKSk9PTApIHsKCQkJ
CXNsZWVwKDUpOwoJCQl9CgkJCWlCeXRlc0xlZnRCdWZmZXIgPSBpQnl0ZXNMZWZ0QnVmZmVyICsg
aVJlYWRlZEJ5dGVzOwoJCQlwcmludGYoIlB1bnRvIC0yXG4iKTsKCQkJd2hpbGUgKChjcEVPTCA9
IG1lbWNocihjQnVmZmVyLExGLChzaXplX3QpaUJ5dGVzTGVmdEJ1ZmZlcikpICE9TlVMTCkgewoJ
CQkJCgkJCQlzdHJ1Y3QgbWVzc2FnZSBCREVudHJ5OwoJCQkJCgkJCQlwcmludGYoIlB1bnRvIC0y
IEJJc1xuIik7CgkJCQkvLyooY3BFT0wpID0gJ1wwJzsKCQkJCQoJCQkJCgkJCQkKCQkJCUJERW50
cnkudGltZSA9IE5VTEw7CgkJCQlCREVudHJ5Lmhvc3QgPSBOVUxMOwoJCQkJQkRFbnRyeS5hcGxp
YyA9IE5VTEw7CgkJCQlCREVudHJ5Lm1lc3MgPSBOVUxMOwoJCQkJCgkJCQlwb3MgPSAxNjsKCQkJ
CQoJCQkgIC8vIFBhcnNlIHRoZSBtZXNzYWdlCgkJCQkKCQkJCS8vRmFsdGEgY29udHJvbGFyIHF1
ZSBubyBoYWxsYSBidWZmZXIgb3ZlcmZsb3cKCQkJCS8vIFBhcnNlIGRhdGUsIHNlZ3VyYW1lbnRl
IGhheWEgcXVlIGludmVydGlyIGVsIG9yZGVuIGVuIGxhIGZlY2hhCgkJCQlwcmludGYoIlB1bnRv
IC0xXG4iKTsKCQkJCUJERW50cnkudGltZSA9IG1hbGxvYygoc2l6ZV90KSBzaXplb2YoY2hhcikg
KiAocG9zKSk7CgkJCQlzdHJuY3B5KEJERW50cnkudGltZSwgY0J1ZmZlciwgcG9zKTsKCQkJCXBy
aW50ZigiUHVudG8gLTFiaXNcbiIpOwoJCQkJCgkJCQkvLyBQYXJzZSBtYWNoaW5lIG9yIHNlbnNv
cgoJCQkJcG9zKys7CgkJCQlwcmludGYoIlB1bnRvIDBcbiIpOwoJCQkJY3BCZWdpbiA9IGNCdWZm
ZXIrcG9zOwoJCQkJcHJpbnRmKCJQdW50byAxXG4iKTsKCQkJCS8vc3RyRW5kaW5nID0gbWVtY2hy
KGNwQmVnaW4sJyAnLGlCeXRlc0xlZnRCdWZmZXItcG9zKTsKCQkJCQoJCQkJcG9zRmluID0gc3Ry
Y3NwbihjcEJlZ2luLGVzcGFjaW8pOwoJCQkJcHJpbnRmKCJQdW50byAyXG4iKTsKCQkJCUJERW50
cnkuaG9zdCA9IG1hbGxvYyhzaXplb2YoY2hhcikgKiAocG9zRmluIC0gcG9zKSk7CgkJCQlwcmlu
dGYoIlB1bnRvIDIgYmlzXG4iKTsKCQkJCXN0cm5jcHkoQkRFbnRyeS5ob3N0LCBjcEJlZ2luLCAo
cG9zRmluIC0gcG9zKSk7CgkJCQlwcmludGYoIlB1bnRvIDNcbiIpOwoJCQkJLy8gUGFyc2UgYXBs
aWNhdGlvbgoJCQkJcG9zPShzaXplX3Qpc3RyRW5kaW5nKzE7CgkJCQkKCQkJCWNwQmVnaW49Y0J1
ZmZlcitwb3M7CgkJCQkKCQkJCXN0ckVuZGluZyA9IG1lbWNocihjcEJlZ2luLCc6JyxpQnl0ZXNM
ZWZ0QnVmZmVyLXBvcyk7CgkJCQkKCQkJCXN0cm5jcHkoQkRFbnRyeS5ob3N0LCBjQnVmZmVyK3Bv
cywoc2l6ZV90KShjcEVPTCAtIHBvcykpOwoJCQkJCgkJCQkvLyBQYXJzZSBtZXNzYWdlCgkJCQlw
b3M9KHNpemVfdClzdHJFbmRpbmcrMjsKCQkJCQkJCQoJCQkJc3RybmNweShCREVudHJ5Lmhvc3Qs
IGNCdWZmZXIrcG9zLCAoc2l6ZV90KShzdHJFbmRpbmcgLSBwb3MpKTsKCQkJCQoJCQkJCgkJCQkK
CQkJCQoJCQkJLy8gU3RvcmUgaW4gZGF0YWJhc2UKCQkJCgkJCQlwcmludGYoIk1lc3NhZ2U6ICVz
IFxuIiwgYnVmKTsKCQkJCQoJCQkJCgkJCQlpZiAoQkRFbnRyeS50aW1lIT1OVUxMKSBmcmVlKEJE
RW50cnkudGltZSk7CgkJCQlpZiAoQkRFbnRyeS5ob3N0IT1OVUxMKSBmcmVlKEJERW50cnkuaG9z
dCk7CgkJCQlpZiAoQkRFbnRyeS5hcGxpYyE9TlVMTCkgZnJlZShCREVudHJ5LmFwbGljKTsKCQkJ
CWlmIChCREVudHJ5Lm1lc3MhPU5VTEwpIGZyZWUoQkRFbnRyeS5tZXNzKTsKCQkJCQoJCQkJCgkJ
CX0KCQl9CgkJCgkJCgkJCgkJCgl9OwoJCgkKCWNsb3NlKGZkUGlwZSk7CgkvLyB1bmxpbmsoY1Bp
cGUpOwoJCglyZXR1cm4oMSk7CQkKCQkKfQoKCi8qIEVPRiAqLwo=
--=====================_7564497==_--