[ale] OT: C not C++ Question

Benjamin Scherrey scherrey at proteus-tech.com
Sun Dec 29 01:34:35 EST 2002


Can you not establish a pointer to a BufferedInputStream outside of 
the while loop, use it within the loop, then delete it outside when 
completed? You don't make clear the implications of 
BufferedInputStream_new() but its a good general rule that one should 
not try to write C++/java code within C. I've intermixed some code 
for you...

On Saturday 28 December 2002 11:20 pm, cfowler wrote:
> Example Code:
> int
> main(int argc, char **argv)
> {
>         Socket *sock;
>         String *tmp;
>         InputStream *is;
>         OutputStream *os;
>         BufferedInputStream *bis;
>         String *to = String_new("<chuck at cehuber.org>");
>         String *from = String_new("<cfowler at opsup.com>");
>         int code;
>
>         if((sock = Socket_new("192.168.1.254", 25)) == NULL)
>                 err("Could not create Socket");
>
>         if((Socket_connect(sock)) == -1)
>                 err("Could not make conenction");
>
>         //Now we have a conenction lets get out streams
>         is = Socket_getInputStream(sock);
>         os = Socket_getOutputStream(sock);
>
>         // Create our buffered input stream
>         bis = BufferedInputStream_new(is);
>
>         tmp = BufferedInputStream_readLine(bis);
>         printf("Got: [%s]\n", String_getChars(tmp));
>         String_dispose(tmp);
>
>         tmp = String_new("Helo localhost.localdomain\r\n");
>         sendCmd(sock, tmp, &code);
>         String_dispose(tmp);
>
>         tmp = String_new_1("MAIL FROM: %s\r\n",
> String_getChars(from)); sendCmd(sock, tmp, &code);
>         String_dispose(tmp);
>
>         tmp = String_new_1("RCPT TO: %s\r\n", String_getChars(to));
>         sendCmd(sock, tmp, &code);
>         String_dispose(tmp);
>
>         tmp = String_new("DATA\r\n");
>         sendCmd(sock, tmp, &code);
>         String_dispose(tmp);
>
>         InputStream_dispose(is);
>         is = InputStream_new(NULL);
>         InputStream_setFd(is, 0); // Set FD to STDIN
>         bis = BufferedInputStream_new(is);

	BufferedInputStream* tbis = 0;

>         while(true) {
>                 tmp = BufferedInputStream_readLine(bis);
>
>                 if(String_startsWith(tmp, ".") == true) {
>                         String_append(tmp, "\r\n");
>                         OutputStream_write_1(os, tmp);

			tbis = BufferedInputStream_new( Socket_getInputStream(sock));
/*
>                         tmp = BufferedInputStream_readLine(
>                                                
> BufferedInputStream_new(
>
> Socket_getInputStream(sock)));

*/			

>
>                         printf("Got: [%s]\n",
> String_getChars(tmp)); String_dispose(tmp);

			BufferedInputStream_dispose(tbis);
			tbis = 0;

>                         break;
>                 }
>
>                 String_append(tmp, "\r\n");
>                 OutputStream_write_1(os, tmp);
>
>         }
>
>
>         // Clean up
>         String_dispose(to);
>         String_dispose(from);
>         BufferedInputStream_dispose(bis);

	if( tbis )
	{
		BufferedInputStream_dispose(tbis);
	}

>         InputStream_dispose(is);
>         OutputStream_dispose(os);
>         Socket_dispose(sock);
>
> }

	So why won't the above work?

		Ben Scherrey

_______________________________________________
Ale mailing list
Ale at ale.org
http://www.ale.org/mailman/listinfo/ale






More information about the Ale mailing list