Hi,
some further data on the endless-loop problem.
I just restarted the server and I'm seeing some broken results:
$ owdir /bus.0
/bus.0/interface
/bus.0/81.0B2F27000000
/bus.0/1F.0CB204000000
/bus.0/1F.BCC604000000
/bus.0/1F.C9B004000000
$ owdir /bus.0/1F.0CB204000000/aux
/bus.0/1F.0CB204000000/aux/interface
/bus.0/1F.0CB204000000/aux/10.DBDB39010800
/bus.0/1F.0CB204000000/aux/26.61F8AE000000
/bus.0/1F.0CB204000000/aux/81.0B2F27000000
/bus.0/1F.0CB204000000/aux/1F.0CB204000000
/bus.0/1F.0CB204000000/aux/1F.BCC604000000
/bus.0/1F.0CB204000000/aux/1F.C9B004000000
/bus.0/1F.0CB204000000/aux/simultaneous
/bus.0/1F.0CB204000000/aux/alarm
$
Like, DUH ?!? Stuff like that is obviously not supposed to happen.
(Bus 0 is on USB.) 2.6p6 got this right:
$ owdir /bus.0
/bus.0/81.0B2F27000000
/bus.0/1F.0CB204000000
/bus.0/1F.BCC604000000
/bus.0/1F.C9B004000000
$ owdir /bus.0/1F.0CB204000000/aux
/bus.0/1F.0CB204000000/aux/10.DBDB39010800
/bus.0/1F.0CB204000000/aux/26.61F8AE000000
Anyway, here's the level 9 dump of one endless-loop thing:
DEBUG: RealHandler: cm.ret=1
DEBUG: ToClient payload=1 size=1, ret=1, sg=0x2 offset=0
DEBUG: RealHandler: done
DEBUG: ServerProcessAccept = 3084409744 CLOSING
DEBUG: ServerProcessAccept [3084409744] try lock 0
DEBUG: ServerProcessAccept [3084409744] locked 0
DEBUG: FromClient payload=68 size=0 type=7 sg=0x2 offset=0
CALL: owserver: parse
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
DEBUG: FS_OWQ_create of
/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
CALL: PARSENAME
path=[/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main]
CALL: Directory message (all at once)
DEBUG: OWSERVER Dir-All SpecifiedBus=1 path =
/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
DEBUG: In
FS_dir_remote(/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main)
CALL: DIRECTORY
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
DEBUG: Start of directory
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
device=1F C3 C6 04 00 00 00 CF
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C9 B0 04 00 00 00 F1
DEBUG: Clearing all branches to level 3
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction end = 0
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Transaction send = 0
DEBUG: Transaction end = 0
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: OWSERVER handler done
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Transaction send = 0
DEBUG: Transaction end = 0
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Transaction send = 0
DEBUG: Transaction end = 0
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 0
DEBUG: Got 64 bytes from USB search
DEBUG: DS9490_next_both SN found: 10 D0 5F 39 01 08 00 C3
DEBUG: BUS_next return = 0 10 D0 5F 39 01 08 00 C3
DEBUG: Cache_Add_Device 10 D0 5F 39 01 08 00 C3 bus=0
DEBUG: Add to cache sn 10 D0 5F 39 01 08 00 C3 pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 1
DEBUG: DS9490_next_both SN found: 10 65 AD 39 01 08 00 0A
DEBUG: BUS_next return = 0 10 65 AD 39 01 08 00 0A
DEBUG: Cache_Add_Device 10 65 AD 39 01 08 00 0A bus=0
DEBUG: Add to cache sn 10 65 AD 39 01 08 00 0A pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 2
DEBUG: DS9490_next_both SN found: 10 8D 80 39 01 08 00 96
DEBUG: BUS_next return = 0 10 8D 80 39 01 08 00 96
DEBUG: Cache_Add_Device 10 8D 80 39 01 08 00 96 bus=0
DEBUG: Add to cache sn 10 8D 80 39 01 08 00 96 pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 3
DEBUG: DS9490_next_both SN found: 10 DB DB 39 01 08 00 EF
DEBUG: BUS_next return = 0 10 DB DB 39 01 08 00 EF
DEBUG: Cache_Add_Device 10 DB DB 39 01 08 00 EF bus=0
DEBUG: Add to cache sn 10 DB DB 39 01 08 00 EF pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 4
DEBUG: DS9490_next_both SN found: 26 61 F8 AE 00 00 00 B1
DEBUG: BUS_next return = 0 26 61 F8 AE 00 00 00 B1
DEBUG: Cache_Add_Device 26 61 F8 AE 00 00 00 B1 bus=0
DEBUG: Add to cache sn 26 61 F8 AE 00 00 00 B1 pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 5
DEBUG: DS9490_next_both SN found: 81 0B 2F 27 00 00 00 33
DEBUG: BUS_next return = 0 81 0B 2F 27 00 00 00 33
DEBUG: Cache_Add_Device 81 0B 2F 27 00 00 00 33 bus=0
DEBUG: Add to cache sn 81 0B 2F 27 00 00 00 33 pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 6
DEBUG: DS9490_next_both SN found: 1F 0C B2 04 00 00 00 06
DEBUG: BUS_next return = 0 1F 0C B2 04 00 00 00 06
DEBUG: Cache_Add_Device 1F 0C B2 04 00 00 00 06 bus=0
DEBUG: Add to cache sn 1F 0C B2 04 00 00 00 06 pointer=(nil) index=-1 size=4
DEBUG: Selecting a path (and device)
path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main SN=1F
C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
DATA: DS9490_reset
DATA: DS9490_reset: ok
DEBUG: Transaction send = 0
DEBUG: Transaction readin = 0
DEBUG: Transaction end = 0
DEBUG: Index 7
DEBUG: Got 64 bytes from USB search
DEBUG: DS9490_next_both SN found: 10 D0 5F 39 01 08 00 C3
... and so on, until finally ...
DEBUG: Index 1253
DEBUG: ToClient payload=-1 size=0, ret=0, sg=0x0 offset=0
DEBUG: ServerProcessAccept = 3084409744 CLOSING
DEBUG: ServerProcessAccept [3084409744] try lock 0
DEBUG: ServerProcessAccept [3084409744] locked 0
DEBUG: FromClient payload=80 size=8192 type=2 sg=0x2 offset=0
CALL: owserver: parse
path=/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
DEBUG: FS_OWQ_create of
/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
CALL: PARSENAME
path=[/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed]
CALL: Read message
DEBUG: ReadHandler:
DEBUG: ReadHandler: From Client sm->payload=80 sm->size=8192 sm->offset=0
DEBUG: ReadHandler: call FS_read_postparse on
/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
DEBUG: READ_POSTPARSE
/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
DEBUG: READ_POSTPOSTPARSE
/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
DEBUG: FS_r_given_bus
OWQ OneWireQuery structure of
/uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
OneWireQuery size=8192 offset=0, extension=0
Byte buffer OneWireQuery buffer, length=8192
-- F8 E4 EC B7 F8 E4 EC B7 50 0E 06 08 50 0E 06 08
-- 43 39 42 30 30 34 30 30 30 30 30 30 2F 61 75 78
-- 2F 31 46 2E 43 33 43 36 30 34 30 30 30 30 30 30
-- 2F 6D 61 69 6E 2F 31 30 2E 44 30 35 46 33 39 30
-- 31 30 38 30 30 2C 2F 62 75 73 2E 30 2F 31 46 2E
-- 30 43 42 32 30 34 30 30 30 30 30 30 2F 61 75 78
... etc.
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | [EMAIL PROTECTED]
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
Nothing is so important that nothing else is important.
>
> I have no idea whatsoever why that happens; it's on a local USB bus,
> admittedly behind a couple of DS2409 hubs (they're necessary -- crappy
> wiring). That did not happen with the last version I had on that system
> (probably 2.6p6; I can do a binary search for the check-in that caused
> the problem, but not now *yawn*).
>
> Happens both with DIR and DIRALL messages, except that the latter doesn't
> flood the client with a stream of duplicate directory entries. ;-)
>
> Debug output:
> DEBUG: ReadHandler: FS_read_postparse ok size=1
> DEBUG: ReadHandler: To Client cm->payload=1 cm->size=1 cm->offset=0
> DEBUG: ReadHandler: return size=1 [0]
> DEBUG: Read message done retbuffer=0x805df40
> DEBUG: FS_OWQ_destroy of
> /uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
> DEBUG: ParsedName_destroy
> /uncached/bus.0/1F.0CB204000000/aux/1F.C9B004000000/main/05.A30032000000/sensed
> DEBUG: RealHandler: FS_ParsedName_destroy done
> DEBUG: RealHandler: cm.ret=1
> DEBUG: ToClient payload=1 size=1, ret=1, sg=0x2 offset=0
> DEBUG: RealHandler: done
> DEBUG: ServerProcessAccept = 3084352400 CLOSING
> DEBUG: ServerProcessAccept [3084352400] try lock 0
> DEBUG: ServerProcessAccept [3084352400] locked 0
> DEBUG: FromClient payload=68 size=0 type=7 sg=0x2 offset=0
> CALL: owserver: parse
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> DEBUG: FS_OWQ_create of
> /bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> CALL: PARSENAME
> path=[/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main]
> CALL: Directory message (all at once)
> DEBUG: OWSERVER Dir-All SpecifiedBus=1 path =
> /bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> DEBUG: In
> FS_dir_remote(/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main)
> CALL: DIRECTORY
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> DEBUG: Start of directory
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> device=1F C3 C6 04 00 00 00 CF
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C9 B0 04 00 00 00 F1
> DEBUG: Clearing all branches to level 3
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction end = 0
> DATA: DS9490_reset
> DEBUG: OWSERVER handler done
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Transaction send = 0
> DEBUG: Transaction end = 0
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> : DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Transaction send = 0
> DEBUG: Transaction end = 0
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Transaction send = 0
> DEBUG: Transaction end = 0
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 0
> DEBUG: Got 64 bytes from USB search
> DEBUG: DS9490_next_both SN found: 10 D0 5F 39 01 08 00 C3
> DEBUG: BUS_next return = 0 10 D0 5F 39 01 08 00 C3
> DEBUG: Cache_Add_Device 10 D0 5F 39 01 08 00 C3 bus=0
> DEBUG: Add to cache sn 10 D0 5F 39 01 08 00 C3 pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 1
> DEBUG: DS9490_next_both SN found: 10 65 AD 39 01 08 00 0A
> DEBUG: BUS_next return = 0 10 65 AD 39 01 08 00 0A
> DEBUG: Cache_Add_Device 10 65 AD 39 01 08 00 0A bus=0
> DEBUG: Add to cache sn 10 65 AD 39 01 08 00 0A pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 2
> DEBUG: DS9490_next_both SN found: 10 8D 80 39 01 08 00 96
> DEBUG: BUS_next return = 0 10 8D 80 39 01 08 00 96
> DEBUG: Cache_Add_Device 10 8D 80 39 01 08 00 96 bus=0
> DEBUG: Add to cache sn 10 8D 80 39 01 08 00 96 pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 3
> DEBUG: DS9490_next_both SN found: 10 DB DB 39 01 08 00 EF
> DEBUG: BUS_next return = 0 10 DB DB 39 01 08 00 EF
> DEBUG: Cache_Add_Device 10 DB DB 39 01 08 00 EF bus=0
> DEBUG: Add to cache sn 10 DB DB 39 01 08 00 EF pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 4
> DEBUG: DS9490_next_both SN found: 26 61 F8 AE 00 00 00 B1
> DEBUG: BUS_next return = 0 26 61 F8 AE 00 00 00 B1
> DEBUG: Cache_Add_Device 26 61 F8 AE 00 00 00 B1 bus=0
> DEBUG: Add to cache sn 26 61 F8 AE 00 00 00 B1 pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 5
> DEBUG: DS9490_next_both SN found: 81 0B 2F 27 00 00 00 33
> DEBUG: BUS_next return = 0 81 0B 2F 27 00 00 00 33
> DEBUG: Cache_Add_Device 81 0B 2F 27 00 00 00 33 bus=0
> DEBUG: Add to cache sn 81 0B 2F 27 00 00 00 33 pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 6
> DEBUG: DS9490_next_both SN found: 1F 0C B2 04 00 00 00 06
> DEBUG: BUS_next return = 0 1F 0C B2 04 00 00 00 06
> DEBUG: Cache_Add_Device 1F 0C B2 04 00 00 00 06 bus=0
> DEBUG: Add to cache sn 1F 0C B2 04 00 00 00 06 pointer=(nil) index=-1 size=4
> DEBUG: Selecting a path (and device)
> path=/bus.0/1F.0CB204000000/aux/1F.C9B004000000/aux/1F.C3C604000000/main
> SN=1F C3 C6 04 00 00 00 CF last path=1F C3 C6 04 00 00 00 CF
> DATA: DS9490_reset
> DATA: DS9490_reset: ok
> DEBUG: Transaction send = 0
> DEBUG: Transaction readin = 0
> DEBUG: Transaction end = 0
> DEBUG: Index 7
> DEBUG: Got 64 bytes from USB search
> DEBUG: DS9490_next_both SN found: 10 D0 5F 39 01 08 00 C3
> [ Note identical serial to first device found. Repeat ad lib. ]
>
> --
> Matthias Urlichs | {M:U} IT Design @ m-u-it.de | [EMAIL PROTECTED]
> Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
> - -
> My mother had a baby once.
> -- Jigger
>
> -------------------------------------------------------------------------
> SF.Net email is sponsored by: The Future of Linux Business White Paper
> from Novell. From the desktop to the data center, Linux is going
> mainstream. Let it simplify your IT future.
> http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
> _______________________________________________
> Owfs-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/owfs-developers
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | [EMAIL PROTECTED]
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
UNMATCHED: Almost as good as the competition
-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell. From the desktop to the data center, Linux is going
mainstream. Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers