449,061 Members | 1,245 Online
Need help? Post your question and get tips & solutions from a community of 449,061 IT Pros & Developers. It's quick & easy.

# Asking if elements in struct arre zero

 P: n/a If I have: struct one_{ unsigned int one_1; unsigned short one_2; unsigned short one_3; }; struct two_{ unsigned int two_1; unsigned short two_2; unsigned char two_3; }; struct mystruct{ struct one_ one; struct two_ two; }mystruct1; Then could I by any change ask on the value of the whole struct mystruct1, that is all the elements in the struct in one call? I want to do something like (in pseudo like language): if(mystruct1 == 0) { print("All elements of mystruct1 is zero");} Best Regards Terry Nov 13 '05 #1
258 Replies

 P: n/a Terry Andersen wrote: If I have: struct one_{ unsigned int one_1; unsigned short one_2; unsigned short one_3; }; struct two_{ unsigned int two_1; unsigned short two_2; unsigned char two_3; }; struct mystruct{ struct one_ one; struct two_ two; }mystruct1; Then could I by any change ask on the value of the whole struct mystruct1, that is all the elements in the struct in one call? I want to do something like (in pseudo like language): if(mystruct1 == 0) { print("All elements of mystruct1 is zero");} No. You could, however, do this: int CompareMyStructsForEquality(const struct mystruct *ms1, const struct mystruct *ms2) { int same = 0; if(ms1->one.one_1 == ms2->one.one_1 && ms1->one.one_2 == ms2->one.one_2 && ms1->one.one_3 == ms2->one.one_3 && ms1->two.one_1 == ms2->two.one_1 && ms1->two.one_2 == ms2->two.one_2 && ms1->two.one_3 == ms2->two.one_3) { same = 1; } return same; } You can then do: struct mystruct z = {0}; if(CompareMyStructsForEquality(&z, &mystruct1) == 1) { puts("mystruct1 is zeroed."); } -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #2

 P: n/a On 2003-10-25, Richard Heathfield wrote: Terry Andersen wrote: struct one_{unsigned int one_1;unsigned short one_2;unsigned short one_3;}; struct two_{unsigned int two_1;unsigned short two_2;unsigned char two_3;}; struct mystruct{struct one_ one;struct two_ two;}mystruct1; Then could I by any change ask on the value of the whole struct mystruct1, that is all the elements in the struct in one call? I want to do something like (in pseudo like language): if(mystruct1 == 0) { print("All elements of mystruct1 is zero");} No. [good stuff snipped] If you knew for sure that struct mystruct did not have any padding bits (and you can not portably determine this), or if you knew that struct mystruct is always initialized in a way such that all its padding bits are zero (such as allocated by calloc(), or was initialized by a call to memset(p, '\0', sz)), you could have used the function memcmp(). { static const struct mystruct z; if(memcmp(&mystruct1, &z)) { print("All elements of mystruct1 is zero"); } } But, Richard's suggestion is the most straight forward and less error prone. -- James Nov 13 '05 #3

 P: n/a James Hu wrote: If you knew for sure that struct mystruct did not have any padding bits (and you can not portably determine this), or if you knew that struct mystruct is always initialized in a way such that all its padding bits are zero (such as allocated by calloc(), or was initialized by a call to memset(p, '\0', sz)), you could have used the function memcmp(). { static const struct mystruct z; if(memcmp(&mystruct1, &z)) { print("All elements of mystruct1 is zero"); I think you'll need sizeof z as a third argument. :-) -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #4

 P: n/a "Richard Heathfield" wrote in message news:bn**********@hercules.btinternet.com... You can then do: struct mystruct z = {0}; if(CompareMyStructsForEquality(&z, &mystruct1) == 1) { puts("mystruct1 is zeroed."); } Aha, I've found a good use for immediate structs. if(CompareMyStructsForEquality(&z, &(struct mystruct){0}) == 1) ..... Nov 13 '05 #5

 P: n/a James Hu wrote: Terry Andersen wrote: struct one_{unsigned int one_1;unsigned short one_2;unsigned short one_3;}; struct two_{unsigned int two_1;unsigned short two_2;unsigned char two_3;}; struct mystruct{struct one_ one;struct two_ two;}mystruct1; If you knew for sure that struct mystruct did not have any padding bits (and you can not portably determine this) Why can't you portably determine this? In particular, what's to stop you from calculating the number of bits in each integer type (using sizeof and CHAR_BIT) and then comparing the maximum value that can be represented with that numbers of bits to the actual maximum value for the type? Padding /bytes/ in the structure can be detected by comparing the size of the structure with the sum of the sizes of its members, of course. Jeremy. Nov 13 '05 #6

 P: n/a I'm not familiar with this {0} syntax. This creates a struct of the correct type where all the members have value 0? Is this C99 or something? "Serve Lau" wrote in message news:bn**********@news2.tilbu1.nb.home.nl... "Richard Heathfield" wrote in message news:bn**********@hercules.btinternet.com... You can then do: struct mystruct z = {0}; if(CompareMyStructsForEquality(&z, &mystruct1) == 1) { puts("mystruct1 is zeroed."); } Aha, I've found a good use for immediate structs. if(CompareMyStructsForEquality(&z, &(struct mystruct){0}) == 1) .... Nov 13 '05 #7

 P: n/a [Please don't top-post. It's very irritating. Fixed.] Roose wrote: "Serve Lau" wrote in message news:bn**********@news2.tilbu1.nb.home.nl... "Richard Heathfield" wrote in message news:bn**********@hercules.btinternet.com... > You can then do: > > struct mystruct z = {0}; > if(CompareMyStructsForEquality(&z, &mystruct1) == 1) > { > puts("mystruct1 is zeroed."); > } Aha, I've found a good use for immediate structs. if(CompareMyStructsForEquality(&z, &(struct mystruct){0}) == 1) .... I'm not familiar with this {0} syntax. This creates a struct of the correct type where all the members have value 0? Is this C99 or something? The syntax struct mystruct z = {0}; is straight C90 - you can use it now, today. When you partially initialise an aggregate (such as an array or struct) with *at least* one element, it is the compiler's job to initialise everything else to static defaults, which are basically 0, 0.0 and NULL. The construct &(struct mystruct){0}, which uses a "compound literal", is C99-only. -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #8

 P: n/a "Roose" wrote in message news:HA*****************@newssvr27.news.prodigy.co m... I'm not familiar with this {0} syntax. This creates a struct of the correct type where all the members have value 0? Is this C99 or something? yes, although named struct also worked in C89 struct mystruct x = {0}; x gets initialized according to the initializer list. If x has more members than there are items in the initializer list they will be filled with 0. So x = {0} effectively fills the struct with 0 and my code example does it with a nameless struct. compared to memset(&x, 0 sizeof x); this is the most portable construct, least to type and a compiler can optimize the most out of it. So why not use it? :) Nov 13 '05 #9

 P: n/a Roose wrote: Thank you for your answer, that cleared it up nicely. No problem. Please don't bottom-post, I find it irritating since when reading a thread, You like reading upside-down? I basically scroll through/read O(n^2) posts rather than O(n). Then encourage people to snip properly, and snip properly yourself to set an example. FCOL. -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #11

 P: n/a On 2003-10-26, Jeremy Yallop wrote: James Hu wrote: Terry Andersen wrote: struct one_{unsigned int one_1;unsigned short one_2;unsigned short one_3;}; struct two_{unsigned int two_1;unsigned short two_2;unsigned char two_3;}; struct mystruct{struct one_ one;struct two_ two;}mystruct1; If you knew for sure that struct mystruct did not have any padding bits (and you can not portably determine this) Why can't you portably determine this? In particular, what's to stop you from calculating the number of bits in each integer type (using sizeof and CHAR_BIT) and then comparing the maximum value that can be represented with that numbers of bits to the actual maximum value for the type? I had a misthought. Yes, you can portably determine this, but it would not be a strictly conforming program. Thanks, -- James Nov 13 '05 #12

 P: n/a On 2003-10-25, Richard Heathfield wrote: James Hu wrote: { static const struct mystruct z; if(memcmp(&mystruct1, &z)) { print("All elements of mystruct1 is zero"); I think you'll need sizeof z as a third argument. :-) Yep! Thanks, -- James Nov 13 '05 #13

 P: n/a On Sun, 26 Oct 2003 20:35:18 GMT, in comp.lang.c , "Roose" wrote: Thank you for your answer, that cleared it up nicely.Please don't bottom-post, I find it irritating since when reading a thread,I basically scroll through/read O(n^2) posts rather than O(n). only if idiots don't Snip the irrelevant material .Sheesh, what is it with some people? Too lazy to snip? I find it_extremely_ irritating when people complain about top-posting, Yeah? Well round here, top posting is frowned on, so stop it. as if theywere the President of UseNet. Even after a decade or more reading it. you should know better. -- Mark McIntyre CLC FAQ CLC readme: ----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==---- http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups ---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =--- Nov 13 '05 #16

 P: n/a OK, feel free to ignore my posts. Like I said, after a decade of posting in UseNet, I have never had a problem getting any answer to any question, with top-posting preferred. I do bottom-post when there are multiple points to address, but in general I find it to read when people top-post (and snip). If you have a newsreader made after 1991, it is no problem to track the thread backward. Why can't we all be grown-ups and accept that there are things in this big world that we can't control. I prefer top-posting, but I have never complained about anyone bottom-posting, and certainly would never go to absurd lengths like actually rearranging the posts. I also find the all the sigs with the stupid quotes and URLs rather annoying, but I've never complained about it. Nov 13 '05 #17

 P: n/a [regarding] if(CompareMyStructsForEquality(&z, &(struct mystruct){0}) == 1) In article Richard Heathfield writes, in part:The construct &(struct mystruct){0}, which uses a "compound literal", isC99-only. Yes. In this particular case -- comparing, not writing on, the structure -- you might want to use: &(const struct mystruct){0} i.e., add a "const" qualifier, provided the compare() function takes const-qualified pointers. This not only makes the structure contents read-only (at least in principle), but also informs the compiler that it is allowed to share storage with other such "const struct mystruct"s. In other words, barring particularly tricky optimization, the sequence: extern void foo(const struct S *, const struct S *); foo(&(struct S){0}, &(struct S){0}); *must* pass two *different* pointer values to function foo(), while the call: foo(&(const struct S){0}, &(const struct S){0}); is allowed (but not required) to pass identical pointer values to foo(). If foo() consists of: void foo(const struct S *a, const struct S *b) { printf("in foo(): have %s pointers\n", a == b ? "same" : "different"); } then the difference is visible and you can tell whether your C99 compiler implements the "share readonly compound-literal storage" optimization. (Disclaimer: this is all based on a C99 draft, and this sort of fiddly stuff about precisely when and where storage is allocated is the kind of thing that changes from draft to draft. :-) ) -- In-Real-Life: Chris Torek, Wind River Systems Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603 email: forget about it http://67.40.109.61/torek/index.html (for the moment) Reading email is like searching for food in the garbage, thanks to spammers. Nov 13 '05 #18

 P: n/a Roose wrote: OK, feel free to ignore my posts. Verywell. Top posting is increddibly irritating. *plonk* -- Noah Roberts - "If you are not outraged, you are not paying attention." Nov 13 '05 #19

 P: n/a Roose wrote: OK, feel free to ignore my posts. You got it. *plonk* Brian Rodenborn Nov 13 '05 #20

 P: n/a On Mon, 27 Oct 2003 00:06:33 GMT, in comp.lang.c , "Roose" wrote: OK, feel free to ignore my posts. done. Like I said, after a decade of posting inUseNet, I have never had a problem getting any answer to any question, withtop-posting preferred. then you've not been in any technical group much I suspect. I do bottom-post when there are multiple points toaddress, but in general I find it to read when people top-post (and snip).If you have a newsreader made after 1991, it is no problem to track thethread backward. pardon me, but this is bullshit. How precisely? Do you retain a complete usenet archive on your PC? -- Mark McIntyre CLC FAQ CLC readme: ----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==---- http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups ---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =--- Nov 13 '05 #21

 P: n/a I SAID ignore my posts, including that one and this one. Not "post some off-topic waste of bandwidth". Nov 13 '05 #22

 P: n/a Roose wrote: I SAID ignore my posts, including that one and this one. Not "post some off-topic waste of bandwidth". Since you appear to want everyone to ignore your posts, why not just stop posting altogether? (Hint: in the absence of any context whatsoever, it is presumed that you are addressing the entire newsgroup.) -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #23

 P: n/a No, _obviously_ I'm referring only to the people who complain about top posting. Don't be dense. Or stop trolling. End this by not replying to this message, and killfilling me. I, on the other hand, won't killfile anyone because I've made it clear that I tolerate bottom-posting, even though I prefer top-posting. Even with the stupid quotes and URLs, I won't killfile anyone. Roose Since you appear to want everyone to ignore your posts, why not just stop posting altogether? (Hint: in the absence of any context whatsoever, it is presumed that you are addressing the entire newsgroup.) -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #24

 P: n/a Roose wrote: No, _obviously_ I'm referring only to the people who complain about top posting. Please quote sufficient context above your reply to make it clear what you're talking about. Thanks. -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #25

 P: n/a On Tue, 28 Oct 2003 08:32:42 GMT, in comp.lang.c , "Roose" wrote: No, _obviously_ I'm referring only to the people who complain about topposting. How the heck can anyone work out what on earth you#re talking about, if you remove all context? And don't rabbit on about referring to archived posts. You are virtually unique in having infinite diskspace to store them all. Don't be dense. Or stop trolling. Pot, thy name is Kettle. -- Mark McIntyre CLC FAQ CLC readme: ----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==---- http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups ---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =--- Nov 13 '05 #26

 P: n/a On Wed, 29 Oct 2003 02:19:58 +0000, Roose wrote: I find it hilarious that you live in such a regimented, literal-minded world that you cannot tell that I meant only for top-posting dogmatists to killfile me. Oh, so other people are supposed to killfile you too? *plonk* Nov 13 '05 #28

 P: n/a Roose wrote: See the other post Which other post? Please quote sufficient context above your reply so that we can know what on earth you're talking about. Thanks. -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #31

 P: n/a Which theory? Sort by thread. It doesn't take a genius. Even if I quote nothing, then you just go to the previous in the thread. There is no hunting. The problem with your theory is that this requires that I hunt down the message that contains the text you are replying to in order for your post to make any kind of sense. If you want your post to make sense it should contain enough of the origional for your comment to make sense. I am not going to back up and read the one before just because you refuse to be courtious. -- Noah Roberts - "If you are not outraged, you are not paying attention." Nov 13 '05 #33

 P: n/a Roose wrote: So, have you killfiled me yet or not? Do you plan to? It's impossible to determine, from the (absence of) text above this sentence, what it actually refers to. We told you about this, remember? This is a test. You failed it. -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #35

 P: n/a No, on the other hand, this implies that: 1) you failed the test, because you saw the message and hence could not have killfiled me. Although I do commend you for not responding directly to the troll, it being so witheringly accurate. Bravo!!! 2) rather than obtaining a decent newsreader, you would rather harass the group with these idiotic messages, claiming you can't make sense of something that requires no context without lines of quoting. None of my last few posts requires any quoting, unless you're an idiot. I'll be happy to continue this exchange as long as you see fit, seeing that I enjoy watching you writhe and post inane comments in order to get the last word -- typical of those with control problems such as yourself. However, please note that you're an utter hypocrite for complaining about top-posting while feeding who you consider to be trolls. Which of course is considered even worse netiquette by the Gods of UseNet. I, on the other hand, recognize that UseNet is a public forum, so people may do as they wish, including the feeding of trolls like yourself. I know this is bad behavior, but it is so much fun. I think if I were a bystander it would be pretty hilarious to see someone get their panties in a knot over top-posting. Not much else in life for you, is there? Get some perspective, seriously. "Richard Heathfield" wrote in message news:bn**********@sparta.btinternet.com... Roose wrote: So, have you killfiled me yet or not? Do you plan to? It's impossible to determine, from the (absence of) text above this sentence, what it actually refers to. We told you about this, remember? This is a test. You failed it. -- Richard Heathfield : bi****@eton.powernet.co.uk "Usenet is a strange place." - Dennis M Ritchie, 29 July 1999. C FAQ: http://www.eskimo.com/~scs/C-faq/top.html K&R answers, C books, etc: http://users.powernet.co.uk/eton Nov 13 '05 #36

 P: n/a On 2003-10-29, Roose wrote: [ ... drivel ... ] Get some perspective, seriously. Your handle obviously refers to a "ruse", but I don't think that word means what you think it means. You display about as much guile and subtlety as a pile of horse manure. You seem to be suffering from delusions of adequacy, the likes of which has been seen over and over again, ad nauseum. In case you don't get the message, allow me to explain in small words, so you will understand, you wart-hog-faced buffoon. Observing netiquette is how netizens show each other courtesy and respect, obviously not high on your list or priorities, worm. Since you ridicule polite requests to observe netiquette, then you show yourself to be a mere snivelling whiny tyro wannabe. Go away, pig, or shut up, you miserable vomitous mass, until you learn how to get along and meaningfully participate in this newsgroup. -- James -- My apologies to William Goldman Nov 13 '05 #37

 P: n/a One paranoid "Roose" wrote: even more offending crap not suitable for quoting. Why don't you just killfile all other posters in this group? That'd be much easier than to make them killfile you. Maybe it's a good idea to even killfile yourself. Think about it. -- Irrwahn (ir*******@freenet.de) Nov 13 '05 #38

 P: n/a Irrwahn Grausewitz wrote: Maybe it's a good idea to even killfile yourself. Think about it. Useneticide? Is that legal? -- Noah Roberts - "If you are not outraged, you are not paying attention." Nov 13 '05 #39

 P: n/a Noah Roberts wrote: Irrwahn Grausewitz wrote: Maybe it's a good idea to even killfile yourself. Think about it.Useneticide? Is that legal? I'd call it Suiseneticide, but: Why not? -- Irrwahn (ir*******@freenet.de) Nov 13 '05 #40

 P: n/a "Roose" wrote: One more troll feeding himself. Will you all stop proving my point already? Are you guys 12? Yes, but in different numerical bases. Maybe I will stop. Just postsome more lame insults, and I'll be both bored and disgusted by your lack ofcreativity, and that will end all the posts. To good a proposal to actually become true. If anyone actually has a decent rebuttal, that relies on logical argumentrather than dogma, and who can come up with some decent insults, please feelfree. 'Anyone' includes you, I assume. It would be far more convenient for all if you'd just switch to insulting yourself directly without polluting usenet with manifestations of your auto-agressive episodes. Have an adequate day. -- Irrwahn (ir*******@freenet.de) Nov 13 '05 #42

 P: n/a Irrwahn Grausewitz wrote: "Roose" wrote: One more troll feeding himself.Will you all stop proving my point already? Are you guys 12? Yes, but in different numerical bases. It would be better if everyone just ignored him. This is the sort of troll (as opposed to Trollsdale) that is easy to deal with. A mass plonking, no replies, his little fun messages drop into the void with nary a ripple. Those of us who killfiled him right away would be blissfully unaware of his screed if others didn't reply to him. Brian Rodenborn Nov 13 '05 #43

 P: n/a Answer: Top Posting Roose wrote: Which theory? Sort by thread. It doesn't take a genius. Even if I quote nothing, then you just go to the previous in the thread. There is no hunting. The problem with your theory is that this requires that I hunt down themessage that contains the text you are replying to in order for yourpost to make any kind of sense. If you want your post to make sense itshould contain enough of the origional for your comment to make sense.I am not going to back up and read the one before just because yourefuse to be courtious.--Noah Roberts - "If you are not outraged, you are not paying attention." Question: What is the most annoying thing in Usenet? BTW, *PLONK* from work also. Nov 13 '05 #44

 P: n/a On Wed, 29 Oct 2003 02:19:58 GMT, in comp.lang.c , "Roose" wrote: See the other post -- just use a newsreader where you can group by thread. 1) please don't top post 2) what other post? You need to include some context 3) please learn to snip - you don't seem to need RJH's message below, so why not snip it? I find it hilarious that you live in such a regimented, literal-minded worldthat you cannot tell that I meant only for top-posting dogmatists tokillfile me. This is a technical newsgroup. If you want to achieve something, say it, don't rely on people reading your mind. We don't bring our crystal balls to usenet. You must be great to have a conversation with. So my friends tell me. -- Mark McIntyre CLC FAQ CLC readme: ----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==---- http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups ---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =--- Nov 13 '05 #46

 P: n/a On Wed, 29 Oct 2003 06:52:49 GMT, in comp.lang.c , "Roose" wrote: So, have you killfiled me yet or not? Do you plan to? who are you talking to? Include some context so that your posts make sense This is a test. please post tests to alt.test. If not, you're a blithering idiot. Did I already mention pots and kettles? Have you noticed that UseNet is public and that comp.lang.c is unmoderated? Yup. That means that, sadly, you cannot control it, Incorrect. It means its self moderating. You're observing this process in action. life. It is an interesting exercise to consider the psychologicalmotivation of why you continue to try. Nothing psychological, its merely that some of us value standards, and others don't give a sh*t about behaving politely. -- Mark McIntyre CLC FAQ CLC readme: ----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==---- http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups ---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =--- Nov 13 '05 #47