forked from enlightenment/efl
parent
8685930a75
commit
dd507c85cb
|
@ -2,8 +2,6 @@
|
|||
#include "e_mem.h"
|
||||
#include "e_str.h"
|
||||
|
||||
static void sort_alpha_internal(char **a, int l, int r);
|
||||
|
||||
double
|
||||
e_get_time(void)
|
||||
{
|
||||
|
@ -12,153 +10,3 @@ e_get_time(void)
|
|||
gettimeofday(&timev, NULL);
|
||||
return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
|
||||
}
|
||||
|
||||
pid_t
|
||||
e_run(char *exe)
|
||||
{
|
||||
pid_t pid;
|
||||
|
||||
pid = fork();
|
||||
if (pid)
|
||||
return pid;
|
||||
setsid();
|
||||
execl("/bin/sh", "/bin/sh", "-c", exe, NULL);
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
pid_t
|
||||
e_run_in_dir(char *exe, char *dir)
|
||||
{
|
||||
pid_t pid;
|
||||
|
||||
pid = fork();
|
||||
if (pid)
|
||||
return pid;
|
||||
chdir(dir);
|
||||
setsid();
|
||||
execl("/bin/sh", "/bin/sh", "-c", exe, NULL);
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
e_set_env(char *variable, char *content)
|
||||
{
|
||||
char env[4096];
|
||||
|
||||
sprintf(env, "%s=%s", variable, content);
|
||||
putenv(env);
|
||||
}
|
||||
|
||||
uid_t
|
||||
e_user_id(void)
|
||||
{
|
||||
static uid_t uid = 0xffffffff;
|
||||
|
||||
if (uid != 0xffffffff)
|
||||
return uid;
|
||||
uid = getuid();
|
||||
return uid;
|
||||
}
|
||||
|
||||
gid_t
|
||||
e_group_id(void)
|
||||
{
|
||||
static gid_t gid = 0xffffffff;
|
||||
|
||||
if (gid != 0xffffffff)
|
||||
return gid;
|
||||
gid = getgid();
|
||||
return gid;
|
||||
}
|
||||
|
||||
static void
|
||||
sort_alpha_internal(char **a, int l, int r)
|
||||
{
|
||||
int i, j, m;
|
||||
char *v, *t;
|
||||
|
||||
if (r > l)
|
||||
{
|
||||
m = ((r + l) >> 1) + 1;
|
||||
if (strcmp(a[l], a[r]) > 0)
|
||||
{
|
||||
t = a[l];
|
||||
a[l] = a[r];
|
||||
a[r] = t;
|
||||
}
|
||||
if (strcmp(a[l], a[m]) > 0)
|
||||
{
|
||||
t = a[l];
|
||||
a[l] = a[m];
|
||||
a[m] = t;
|
||||
}
|
||||
if (strcmp(a[r], a[m]) > 0)
|
||||
{
|
||||
t = a[r];
|
||||
a[r] = a[m];
|
||||
a[m] = t;
|
||||
}
|
||||
v = a[r];
|
||||
i = l - 1;
|
||||
j = r;
|
||||
for (;;)
|
||||
{
|
||||
while (strcmp(a[++i], v) < 0);
|
||||
while (strcmp(a[--j], v) > 0);
|
||||
if (i >= j)
|
||||
break;
|
||||
t = a[i];
|
||||
a[i] = a[j];
|
||||
a[j] = t;
|
||||
}
|
||||
t = a[i];
|
||||
a[i] = a[r];
|
||||
a[r] = t;
|
||||
sort_alpha_internal(a, l, i - 1);
|
||||
sort_alpha_internal(a, i + 1, r);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
sort_alpha(char **list, int num)
|
||||
{
|
||||
sort_alpha_internal(list, 0, num - 1);
|
||||
}
|
||||
|
||||
char *
|
||||
e_home_dir(void)
|
||||
{
|
||||
char *home;
|
||||
|
||||
home = getenv("HOME");
|
||||
if (!home)
|
||||
home = getenv("TMPDIR");
|
||||
if (!home)
|
||||
home = "/tmp";
|
||||
return home;
|
||||
}
|
||||
|
||||
const char *
|
||||
e_get_basename(const char *s)
|
||||
{
|
||||
const char *b;
|
||||
|
||||
b = strrchr(s, '/');
|
||||
return ((b) ? (++b) : (s));
|
||||
}
|
||||
|
||||
void
|
||||
spawn_info_window(char *path)
|
||||
{
|
||||
|
||||
char runline[8192];
|
||||
char *realline;
|
||||
|
||||
realline = e_string_escape(path);
|
||||
sprintf(runline, "efileinfo %s", realline);
|
||||
e_run(runline);
|
||||
IF_FREE(realline);
|
||||
|
||||
}
|
||||
|
|
|
@ -6,51 +6,12 @@
|
|||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef EFM_DEBUG
|
||||
# define D(x) do {printf(__FILE__ ":%d: ", __LINE__); printf x; fflush(stdout);} while (0)
|
||||
#else
|
||||
# define D(x) ((void) 0)
|
||||
#endif
|
||||
|
||||
#define XY_IN_RECT(x, y, rx, ry, rw, rh) \
|
||||
(((x) >= (rx)) && ((y) >= (ry)) && ((x) < ((rx) + (rw))) && ((y) < ((ry) + (rh))))
|
||||
#define CLIP(x, y, w, h, xx, yy, ww, hh) \
|
||||
if (x < (xx)) {w += (x - (xx)); x = (xx);} \
|
||||
if (y < (yy)) {h += (y - (yy)); y = (yy);} \
|
||||
if ((x + w) > ((xx) + (ww))) {w = (ww) - x;} \
|
||||
if ((y + h) > ((yy) + (hh))) {h = (hh) - y;}
|
||||
#define BOUND_RECTS(cx, cy, cw, ch, x, y, w, h, d) \
|
||||
if (d) { \
|
||||
if ((x) < cx) {cw += (cx - (x)); cx = x;} \
|
||||
if ((y) < cy) {ch += (cy - (y)); cy = y;} \
|
||||
if (((x) + (w)) > (cx + cw)) cw += (((x) + (w)) - (cx + cw)); \
|
||||
if (((y) + (h)) > (cy + ch)) ch += (((y) + (h)) - (cy + ch)); } \
|
||||
else { cx = x; cy = y; cw = w; ch = h; (d) = 1; }
|
||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||
#define SPANS_COMMON(x1, w1, x2, w2) \
|
||||
(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1)))))
|
||||
#define RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) \
|
||||
((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh))))
|
||||
#define RECT_INSIDE(x, y, w, h, xx, yy, ww, hh) \
|
||||
(((xx) >= (x)) && (((xx) + (ww)) <= ((x) + (w))) && \
|
||||
((yy) >= (y)) && (((yy) + (hh)) <= ((y) + (h))))
|
||||
#define START_LIST_DEL(type, base, cmp) \
|
||||
type *_p, *_pp; _pp = NULL; _p = (base); while(_p) { if (cmp) { \
|
||||
if (_pp) _pp->next = _p->next; else (base) = _p->next;
|
||||
#define END_LIST_DEL \
|
||||
return; } _pp = _p; _p = _p->next; }
|
||||
#define IC(name) e_path_find(path_icons, name)
|
||||
|
||||
double e_get_time(void);
|
||||
pid_t e_run(char *exe);
|
||||
pid_t e_run_in_dir(char *exe, char *dir);
|
||||
void e_set_env(char *variable, char *content);
|
||||
uid_t e_user_id(void);
|
||||
gid_t e_group_id(void);
|
||||
void sort_alpha(char **list, int num);
|
||||
char *e_home_dir(void);
|
||||
const char *e_get_basename(const char *);
|
||||
void spawn_info_window(char *path);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue