Hi!

well it's not a unified diff - so it'll have to be rejected (ie  a diff with the
+'s and -'s at the start of lines). also please attach diffs to mails - not
inline them :)

Took the liberty of an inline cvs diff as it was meant only for
viewing :) Sorry anyway... Here's the diff -Naur for e_actions.c
against v1.70 attached..

Regards,
Ramkumar.

--
April 1: This is the day upon which we are reminded of
what we are on the other three hundred and sixty-four.
         -- Mark Twain, "Pudd'nhead Wilson's Calendar"
--- e_actions.c.orig    2006-06-20 20:59:49.791174768 +0530
+++ e_actions.c 2006-06-19 22:10:52.583990632 +0530
@@ -353,6 +353,67 @@
 }
 
 /***************************************************************************/
+ACT_FN_GO(window_fullscreen_toggle)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+   if (!((E_Border *)obj)->lock_user_fullscreen)
+     {
+       E_Border *bd;
+       bd = (E_Border *)obj;
+       if (bd->fullscreen)
+         e_border_unfullscreen(bd);
+       else if (params == 0 || *params == '\0')
+         e_border_fullscreen(bd, e_config->fullscreen_policy);
+       else if (! strcmp(params, "resize"))
+         e_border_fullscreen(bd, E_FULLSCREEN_RESIZE);
+       else if (! strcmp(params, "zoom"))
+         e_border_fullscreen(bd, E_FULLSCREEN_ZOOM);
+     }
+}
+
+/***************************************************************************/
+ACT_FN_GO(window_fullscreen)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+   if (!((E_Border *)obj)->lock_user_fullscreen)
+     {
+       E_Border *bd;
+       bd = (E_Border *)obj;
+       if (params)
+         {
+            int v;
+            char buf[32];
+            if (sscanf(params, "%i %20s", &v, buf) == 2)
+              {
+                 if (v == 1)
+                   {
+                     if (buf == 0 || *buf == '\0')
+                       e_border_fullscreen(bd, e_config->fullscreen_policy);
+                     else if (! strcmp(buf, "resize"))
+                       e_border_fullscreen(bd, E_FULLSCREEN_RESIZE);
+                     else if (! strcmp(buf, "zoom"))
+                       e_border_fullscreen(bd, E_FULLSCREEN_ZOOM);
+                   }
+                 else if (v == 0)
+                   e_border_unfullscreen(bd);
+              }
+         }
+     }
+}
+
+/***************************************************************************/
 ACT_FN_GO(window_maximized_toggle)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
@@ -1201,6 +1262,97 @@
      }
 }
 
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#define UNIX_PATH_MAX 108
+
+#include <netinet/in.h>
+#include <netdb.h>
+
+ACT_FN_GO(sock)
+{
+  if (params)
+    {
+      struct sockaddr* addr = NULL;
+      char *buf, *token, *type;
+      int fd, addrlen, flag = 0;
+      buf = strdup (params);
+      if (! (token = strtok (buf, " "))) goto final;
+      type = token;
+      if (! (token = strtok (NULL, " "))) goto final;
+      if ((! strncmp (type, "unix", 4) && (flag = 1)) ||
+         (! strncmp (type, "unix-abs", 4) && (flag = 2)))
+       {
+         struct sockaddr_un *caddr;
+         if ((fd = socket (AF_UNIX, SOCK_DGRAM, 0)) < 0) goto final;
+         caddr = (struct sockaddr_un*) malloc (sizeof (struct sockaddr_un));
+         caddr->sun_family = AF_UNIX;
+         if (flag == 1)
+             strncpy (caddr->sun_path, token, UNIX_PATH_MAX);
+         else
+           {
+             *(caddr->sun_path) = '\0';
+             strncpy (caddr->sun_path + 1, token, UNIX_PATH_MAX - 1);
+           }
+         addr = (struct sockaddr*) caddr;
+         addrlen = sizeof (struct sockaddr_un);
+       }
+      else if ((! strcmp (type, "udp") && (flag = 3)) ||
+              (! strcmp (type, "tcp") && (flag = 4)))
+       {
+         struct addrinfo hints;
+         struct addrinfo* caddr, *ptr;
+         char *colon;
+         if (! (colon = strchr (token, ':'))) goto final;
+         *colon = '\0';
+         memset (&hints, 0, sizeof (struct addrinfo));
+         hints.ai_family = AF_INET;
+         hints.ai_socktype = ((flag == 3) ? SOCK_DGRAM : SOCK_STREAM);
+         if (getaddrinfo (token, colon + 1, &hints, &caddr)) goto final;
+         for (ptr = caddr; ptr; ptr = ptr->ai_next)
+           {
+             if (ptr->ai_family == hints.ai_family &&
+                 ptr->ai_socktype == hints.ai_socktype)
+               {
+                 if ((fd = socket (ptr->ai_family, ptr->ai_socktype,
+                                   ptr->ai_protocol)) < 0)
+                   ptr = NULL;
+                 else
+                   {
+                     addrlen = ptr->ai_addrlen;
+                     addr = (struct sockaddr*) malloc (addrlen);
+                     memcpy (addr, ptr->ai_addr, addrlen);
+                   }
+                 break;
+               }
+           }
+         freeaddrinfo (caddr);
+         if (! ptr) goto final;
+       }
+      else goto final;
+      if (connect (fd, addr, addrlen) < 0) goto finish;
+      token = strtok (NULL, "");
+      {
+       size_t towrite = strlen (token);
+       ssize_t res;
+       while (towrite)
+         {
+           int res = write (fd, token, towrite);
+           if (res < 0 && errno == EINTR) continue;
+           if (res <= 0) break;
+           towrite -= res;
+           token += res;
+         }
+      }
+    finish:
+      close (fd);
+      free (addr);
+    final:
+      free (buf);
+    }
+}
+
 /***************************************************************************/
 ACT_FN_GO(app)
 {
@@ -1594,6 +1746,14 @@
    
    ACT_GO(window_iconic);
    
+   /* window_fullscreen_toggle */
+   ACT_GO(window_fullscreen_toggle);
+   e_register_action_predef_name(_("Window : State"), _("Fullscreen Mode 
Toggle"),
+                                "window_fullscreen_toggle", NULL,
+                                EDIT_RESTRICT_ACTION | EDIT_RESTRICT_PARAMS, 
0);
+
+   ACT_GO(window_fullscreen);
+
    /* window_maximized_toggle */
    ACT_GO(window_maximized_toggle);
    e_register_action_predef_name(_("Window : State"), _("Maximize"), 
"window_maximized_toggle",
@@ -1795,6 +1955,11 @@
    e_register_action_predef_name(_("Launch"), _("Defined Command"), "exec", 
NULL,
                                 EDIT_RESTRICT_ACTION, 0);
 
+   /* sock */
+   ACT_GO(sock);
+   e_register_action_predef_name(_("Launch"), _("Output to socket"), "sock", 
NULL,
+                                EDIT_RESTRICT_ACTION, 0);
+
    /* app */
    ACT_GO(app);
    e_register_action_predef_name(_("Launch"), _("Application"), "app", NULL,
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to