Jabber WindowGram Client (JWGC)

Introduction Screenshots Installation Downloads
Documentation Browse Source Resources Project Site

Stable Version
-none-

Latest Version
beta5



Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

JFile.c

Go to the documentation of this file.
00001 #include <sysdep.h>
00002 #include "include/libjwgc.h"
00003 
00004 /* $Id: JFile.c,v 1.11 2004/08/15 17:21:17 jadestorm Exp $ */
00005 
00006 int 
00007 JSetupComm()
00008 {
00009         mode_t prevmode;
00010         int sock;
00011         struct sockaddr_un sockaddr;
00012         char file[MAXNAMLEN];
00013         struct linger li;
00014         char *envptr;
00015 
00016         li.l_onoff = 1;
00017         li.l_linger = 900;
00018 
00019         prevmode = umask(S_IRWXO|S_IRWXG);
00020         sock = socket(AF_UNIX, SOCK_STREAM, 0);
00021         if (sock < 0) {
00022                 return -1;
00023         }
00024         envptr = getenv("JWGCSCK");
00025         if (!envptr) {
00026                 (void) sprintf(file, "/tmp/jwgcsck.%d", getuid());
00027                 envptr = file;
00028         }
00029         unlink(envptr);
00030 
00031         sockaddr.sun_family = AF_UNIX;
00032         strcpy(sockaddr.sun_path, envptr);
00033         if (bind(sock, (struct sockaddr *)&sockaddr,
00034                 strlen(sockaddr.sun_path)+1 + sizeof(sockaddr.sun_family))
00035                         < 0) {
00036                 return -1;
00037         }
00038         if (listen(sock, 10) < 0) {
00039                 return -1;
00040         }
00041 
00042         if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char *)&li, sizeof(li))
00043                         == -1) {
00044                 return -1;
00045         }
00046 
00047 
00048         umask(prevmode);
00049 
00050         return sock;
00051 }
00052 
00053 int 
00054 JConnect()
00055 {
00056         int sock;
00057         struct sockaddr_un sockaddr;
00058         char file[MAXNAMLEN];
00059         struct linger li;
00060         char *envptr;
00061 
00062         li.l_onoff = 1;
00063         li.l_linger = 900;
00064 
00065         sock = socket(AF_UNIX, SOCK_STREAM, 0);
00066         if (sock < 0) {
00067                 return -1;
00068         }
00069         envptr = getenv("JWGCSCK");
00070         if (!envptr) {
00071                 (void) sprintf(file, "/tmp/jwgcsck.%d", getuid());
00072                 envptr = file;
00073         }
00074         sockaddr.sun_family = AF_UNIX;
00075 
00076         strcpy(sockaddr.sun_path, envptr);
00077         if (connect(sock, (struct sockaddr *)&sockaddr,
00078                 strlen(sockaddr.sun_path)+1 + sizeof(sockaddr.sun_family))
00079                         < 0) {
00080                 return -1;
00081         }
00082 
00083         if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char *)&li, sizeof(li))
00084                         == -1) {
00085                 return -1;
00086         }
00087 
00088 
00089         return sock;
00090 }
00091 
00092 void 
00093 JCleanupSocket()
00094 {
00095         char savefile[MAXNAMLEN];
00096         FILE *savefd;
00097         char *envptr;
00098 
00099         envptr = getenv("JWGCSCK");
00100         if (!envptr) {
00101                 (void) sprintf(savefile, "/tmp/jwgcsck.%d", getuid());
00102                 envptr = savefile;
00103         }
00104         unlink(envptr);
00105 }


Last updated at Tue Dec 18 21:07:42 PST 2007. This site and project hosted by...SourceForge.net Logo
Source Perspective by Fisheye