hi ppl,<br>&nbsp; i am new to this topic, and could not find much details of what i was searching for, so that this would be the right place to mail Iin case it aint, please guide me )...<br><br>i wanted to know who does the mounting of hotpluged devices? i know that halddaemon broacasts the message on Dbus wen a new device is added and the callouts for the device is completed and the /proc/mount tree is changed. but who reads the messages from Dbus, is it gnome-volume-manager or gnome-mount? if it is the manager, i could not find that part of the code in the sources which does the mounting...
<br><br><br>also, i tried reading messages from udev by killing the systems hald and reading the mesages by creating a local socket.. code is as under, but it doesnt seem to work..<br><br>static gboolean hald_udev_data(GIOChannel *source, GIOCondition condition, gpointer user_data)
<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int fd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int retval;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct msghdr smsg;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct cmsghdr *cmsg;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct iovec iov;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct ucred *cred;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char cred_msg[CMSG_SPACE(sizeof(struct ucred))];<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char buf[4096];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size_t bufpos = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const char *action = NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(buf, 0x00, sizeof (buf));<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fd = g_io_channel_unix_get_fd (source);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iov.iov_base = &amp;buf;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iov.iov_len = sizeof (buf);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(&amp;smsg, 0x00, sizeof (struct msghdr));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smsg.msg_iov = &amp;iov;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smsg.msg_iovlen = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smsg.msg_control = cred_msg;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smsg.msg_controllen
 = sizeof (cred_msg);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval = recvmsg (fd, &amp;smsg, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(retval==-1){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syslog(&quot;\nError recieving mesage from udev--my hald&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syslog(&quot;Recieved message is: %s --my hald&quot;,(char *)smsg.msg_iov-&gt;iov_base);
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<br><br><br>}<br><br>void osspec_init()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int udev_socket,on=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sockaddr_un saddr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GIOChannel *udev_channel;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; socklen_t addrlen;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(&amp;saddr,0x00,sizeof(saddr));
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; saddr.sun_family=AF_LOCAL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(&amp;saddr.sun_path[1],&quot;/org/freedesktop/hal/udev_event&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addrlen=offsetof(struct sockaddr_un,sun_path) + strlen(saddr.sun_path + 1);<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udev_socket=socket(AF_LOCAL,SOCK_DGRAM,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(udev_socket&lt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Error creating socket&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\nSocket created..&quot;);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((bind(udev_socket,(struct sockaddr *) &amp;saddr,addrlen))&lt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\nError binding socket..&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* enable receiving of the sender credentials */
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setsockopt(udev_socket, SOL_SOCKET, SO_PASSCRED, &amp;on, sizeof(on));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udev_channel = g_io_channel_unix_new (udev_socket);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_io_add_watch (udev_channel, G_IO_IN, hald_udev_data, NULL);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_io_channel_unref (udev_channel);<br><br>}<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pid_t child_pid;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GMainLoop *loop=g_main_loop_new(NULL,FALSE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; child_pid=fork();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(child_pid&lt;0){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\Fork error..&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (child_pid&gt;0){//parent<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setsid();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; umask(0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chdir(&quot;/&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\nProcess demonized&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*process demonized*/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; osspec_init();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_main_loop_run(loop);<br>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 132,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bot
<br><br><br><br><br><br>thank u in advance..<br clear="all"><br>-- <br>Regards<br>&nbsp;ARviND AyyangaR<br><br>