Mon Jan 3 14:39:48 2005 Michael Jennings (mej)

Spec file fixes and cleanups.

Re-indented E-Power.c.

Started a new ChangeLog using mezz format since I'm the only one who
messes with this any more.
----------------------------------------------------------------------


SVN revision: 12702
This commit is contained in:
Michael Jennings 2005-01-03 19:40:50 +00:00
parent 9e37cb5eb5
commit f4550e1e6d
4 changed files with 2582 additions and 2583 deletions

2307
ChangeLog

File diff suppressed because it is too large Load Diff

2303
ChangeLog.1 Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,22 @@
%define use_gnome 0
%define use_gnome %{?_with_gnome}0
Summary: Enlightenment Epplets
Name: enlightenment-epplets
Version: 0.8
Release: 0.2
Release: 0.%(date '+%Y%m%d')
License: BSD
Group: User Interface/X
URL: http://www.enlightenment.org/
Source0: http://prdownloads.sourceforge.net/enlightenment/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
Packager: %{?_packager:%{_packager}}%{!?_packager:%{_vendor}}
Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:%{_vendor}}
Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
#BuildSuggests: freeglut-devel xorg-x11-devel
BuildRequires: imlib2-devel XFree86-devel
Requires: enlightenment >= 0.16.0
Provides: epplets = %{version}
Obsoletes: epplets
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%description
Epplets are small, handy Enlightenment applets, similar to "dockapps"
@ -26,47 +32,34 @@ slideshow, a URL grabber, a panel-like toolbar, and more.
CFLAGS="$RPM_OPT_FLAGS"
export CFLAGS
%{configure} --prefix=%{_prefix} --bindir=%{_bindir} --datadir=%{_datadir} \
%if %{use_gnome}
%{configure} --prefix=%{_prefix} --bindir=%{_bindir} --datadir=%{_datadir} --enable-fsstd --disable-autorespawn
%else
%{configure} --prefix=%{_prefix} --bindir=%{_bindir} --datadir=%{_datadir} --enable-fsstd
--disable-autorespawn \
%endif
make
--enable-fsstd %{?acflags}
%{__make} %{?_smp_mflags} %{?mflags}
%install
make DESTDIR=$RPM_BUILD_ROOT install
%{__make} install DESTDIR=$RPM_BUILD_ROOT %{?mflags_install}
%post
%ifos Linux
/sbin/ldconfig
%ifos linux
%post -p /sbin/ldconfig
%endif
%postun
%ifos Linux
/sbin/ldconfig
%ifos linux
%postun -p /sbin/ldconfig
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%defattr(-, root, root)
%doc ChangeLog
%{_prefix}/include/*
%{_prefix}/lib/*
%{_includedir}/*
%{_libdir}/*
%{_bindir}/*
%{_datadir}/enlightenment/epplet_icons/*
%{_datadir}/enlightenment/epplet_data/*
%changelog
* Mon May 24 2004 Stuart Children <stuart@terminus.co.uk> - 0.8-0.2
- Renamed from epplets to enlightenment-epplets.
* Mon May 10 2004 Stuart Children <stuart@terminus.co.uk> - 0.8-0.1
- Tidy ups.
- Fix download url.
- Use License rather than Copyright.
- Remove Packager to avoid people creating mis-attributed packages.

View File

@ -10,30 +10,31 @@
/* Length of explain strings in /proc/acpi/battery/BAT0 data files */
#define DATA_EXPLAIN_STR_LEN 25
int prev_bat_val = 110;
int bat_val = 0;
int time_val = 0;
int prev_up[16] =
{0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0};
int prev_count = 0;
Epplet_gadget b_close, b_suspend, b_sleep, b_help, image, label;
int prev_bat_val = 110;
int bat_val = 0;
int time_val = 0;
int prev_up[16] = { 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
int prev_count = 0;
Epplet_gadget b_close, b_suspend, b_sleep, b_help, image, label;
static void cb_timer(void* data);
static void cb_timer_acpi(void *data);
static void cb_timer_apm(void *data);
static void cb_close(void *data);
static void cb_in(void *data, Window w);
static void cb_out(void *data, Window w);
static void cb_help(void *data);
static void cb_timer(void *data);
static void cb_timer_acpi(void *data);
static void cb_timer_apm(void *data);
static void cb_close(void *data);
static void cb_in(void *data, Window w);
static void cb_out(void *data, Window w);
static void cb_help(void *data);
static void
cb_timer(void *data)
{
struct stat st;
struct stat st;
if ((stat("/proc/apm", &st) > -1) && S_ISREG(st.st_mode))
cb_timer_apm(data);
else if ( (stat("/proc/acpi", &st) > -1) && S_ISDIR(st.st_mode))
else if ((stat("/proc/acpi", &st) > -1) && S_ISDIR(st.st_mode))
cb_timer_acpi(data);
}
@ -41,270 +42,268 @@ static void
cb_timer_acpi(void *data)
{
/* We don't have any data from the remaining percentage, and time directly,
so we have to calculate and measure them.
(Measure the time and calculate the percentage.)
*/
static int prev_bat_drain = 1;
FILE *f;
DIR *dirp;
struct dirent *dp;
int bat_max = 0;
int bat_filled = 0;
int bat_level = 0;
int bat_drain = 1;
int bat_val = 0;
char current_status[256];
char *line = 0;
size_t lsize = 0;
int discharging = 0;
int charging = 0;
int battery = 0;
int design_cap_unknown = 0;
int last_full_unknown = 0;
int rate_unknown = 0;
int level_unknown = 0;
int hours, minutes;
* so we have to calculate and measure them.
* (Measure the time and calculate the percentage.)
*/
static int prev_bat_drain = 1;
FILE *f;
DIR *dirp;
struct dirent *dp;
int bat_max = 0;
int bat_filled = 0;
int bat_level = 0;
int bat_drain = 1;
int bat_val = 0;
char current_status[256];
char *line = 0;
size_t lsize = 0;
int discharging = 0;
int charging = 0;
int battery = 0;
int design_cap_unknown = 0;
int last_full_unknown = 0;
int rate_unknown = 0;
int level_unknown = 0;
int hours, minutes;
/* Read some information on first run. */
dirp = opendir("/proc/acpi/battery");
if (dirp)
{
while ((dp = readdir(dirp)))
{
char buf[4096];
if ((!strcmp(dp->d_name, ".")) || (!strcmp(dp->d_name, "..")))
continue;
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/info",
dp->d_name);
f = fopen(buf, "r");
if (f)
{
int design_cap = 0;
int last_full = 0;
getline(&line, &lsize, f);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown"))
design_cap_unknown = 1;
else
sscanf(line, "%*[^:]: %i %*s", &design_cap);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown"))
last_full_unknown = 1;
else
sscanf(line, "%*[^:]: %i %*s", &last_full);
fclose(f);
bat_max += design_cap;
bat_filled += last_full;
}
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/state",
dp->d_name);
f = fopen(buf, "r");
if (f)
{
char present[256];
char capacity_state[256];
char charging_state[256];
int rate = 1;
int level = 0;
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s", present);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s", capacity_state);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s", charging_state);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown")) rate_unknown = 1;
else sscanf(line, "%*[^:]: %i %*s", &rate);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown")) level_unknown = 1;
else sscanf(line, "%*[^:]: %i %*s", &level);
fclose(f);
if (!strcmp(present, "yes")) battery++;
if (!strcmp(charging_state, "discharging")) discharging++;
if (!strcmp(charging_state, "charging")) charging++;
bat_drain += rate;
bat_level += level;
}
}
closedir(dirp);
while ((dp = readdir(dirp)))
{
char buf[4096];
if ((!strcmp(dp->d_name, ".")) || (!strcmp(dp->d_name, "..")))
continue;
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/info",
dp->d_name);
f = fopen(buf, "r");
if (f)
{
int design_cap = 0;
int last_full = 0;
getline(&line, &lsize, f);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown"))
design_cap_unknown = 1;
else
sscanf(line, "%*[^:]: %i %*s", &design_cap);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown"))
last_full_unknown = 1;
else
sscanf(line, "%*[^:]: %i %*s", &last_full);
fclose(f);
bat_max += design_cap;
bat_filled += last_full;
}
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/state",
dp->d_name);
f = fopen(buf, "r");
if (f)
{
char present[256];
char capacity_state[256];
char charging_state[256];
int rate = 1;
int level = 0;
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s", present);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s", capacity_state);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s", charging_state);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown"))
rate_unknown = 1;
else
sscanf(line, "%*[^:]: %i %*s", &rate);
getline(&line, &lsize, f);
sscanf(line, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown"))
level_unknown = 1;
else
sscanf(line, "%*[^:]: %i %*s", &level);
fclose(f);
if (!strcmp(present, "yes"))
battery++;
if (!strcmp(charging_state, "discharging"))
discharging++;
if (!strcmp(charging_state, "charging"))
charging++;
bat_drain += rate;
bat_level += level;
}
}
closedir(dirp);
}
if (prev_bat_drain < 1) prev_bat_drain = 1;
if (bat_drain < 1) bat_drain = prev_bat_drain;
if (prev_bat_drain < 1)
prev_bat_drain = 1;
if (bat_drain < 1)
bat_drain = prev_bat_drain;
prev_bat_drain = bat_drain;
if (bat_filled > 0)
bat_val = (100 * bat_level) / bat_filled;
bat_val = (100 * bat_level) / bat_filled;
else
bat_val = 100;
bat_val = 100;
if (discharging)
minutes = (60 * bat_level) / bat_drain;
minutes = (60 * bat_level) / bat_drain;
else
{
if (bat_filled > 0)
minutes = (60 * (bat_filled - bat_level)) / bat_drain;
else
minutes = 0;
if (bat_filled > 0)
minutes = (60 * (bat_filled - bat_level)) / bat_drain;
else
minutes = 0;
}
hours = minutes / 60;
minutes -= (hours * 60);
if (charging)
{
if (level_unknown)
snprintf(current_status, sizeof(current_status),
"Level ???\n"
"Bad Driver");
else if (rate_unknown)
snprintf(current_status, sizeof(current_status),
"%i%% PWR\n"
"Time ???",
bat_val);
else
snprintf(current_status, sizeof(current_status),
"%i%% PWR\n"
"%02i:%02i",
bat_val, hours, minutes);
if (level_unknown)
snprintf(current_status, sizeof(current_status),
"Level ???\n" "Bad Driver");
else if (rate_unknown)
snprintf(current_status, sizeof(current_status),
"%i%% PWR\n" "Time ???", bat_val);
else
snprintf(current_status, sizeof(current_status),
"%i%% PWR\n" "%02i:%02i", bat_val, hours, minutes);
}
else if (discharging)
{
if (level_unknown)
snprintf(current_status, sizeof(current_status),
"Level ???\n"
"Bad Driver");
else if (rate_unknown)
snprintf(current_status, sizeof(current_status),
"%i%%\n"
"Time ???",
bat_val);
else
snprintf(current_status, sizeof(current_status),
"%i%%\n"
"%02i:%02i",
bat_val, hours, minutes);
if (level_unknown)
snprintf(current_status, sizeof(current_status),
"Level ???\n" "Bad Driver");
else if (rate_unknown)
snprintf(current_status, sizeof(current_status),
"%i%%\n" "Time ???", bat_val);
else
snprintf(current_status, sizeof(current_status),
"%i%%\n" "%02i:%02i", bat_val, hours, minutes);
}
else if (!battery)
snprintf(current_status, sizeof(current_status), "No Bat");
snprintf(current_status, sizeof(current_status), "No Bat");
else
snprintf(current_status, sizeof(current_status), "Full");
snprintf(current_status, sizeof(current_status), "Full");
/* Display current status */
Epplet_change_label(label, current_status);
sprintf(current_status, EROOT"/epplet_data/E-Power//E-Power-Bat-%i.png",
((bat_val + 5) / 10) * 10);
sprintf(current_status, EROOT "/epplet_data/E-Power//E-Power-Bat-%i.png",
((bat_val + 5) / 10) * 10);
Epplet_change_image(image, 44, 24, current_status);
Epplet_timer(cb_timer, NULL, 5.0, "TIMER");
/* Final steps before ending the status update. */
data = NULL;
if ( lsize )
free( line );
if (lsize)
free(line);
}
static void
cb_timer_apm(void *data)
{
static FILE *f;
static FILE *f;
f = fopen("/proc/apm", "r");
if (f)
{
char s[256], s1[32], s2[32], s3[32];
int apm_flags, ac_stat, bat_stat, bat_flags;
int i, hours, minutes, up, up2;
char *s_ptr;
fgets(s, 255, f);
sscanf(s, "%*s %*s %x %x %x %x %s %s %s", &apm_flags, &ac_stat, &bat_stat, &bat_flags, s1, s2, s3);
s1[strlen(s1) - 1] = 0;
bat_val=atoi(s1);
if (!strcmp(s3, "sec"))
time_val = atoi(s2);
else if (!strcmp(s3, "min"))
time_val = atoi(s2) * 60;
fclose(f);
up = bat_val - prev_bat_val;
up2 = up;
for (i = 0; i < 16; i++)
up2 = + prev_up[i];
up2 = (up2 * 60) / 17;
prev_up[prev_count] = up;
prev_count++;
if (prev_count >= 16)
prev_count = 0;
char s[256], s1[32], s2[32], s3[32];
int apm_flags, ac_stat, bat_stat, bat_flags;
int i, hours, minutes, up, up2;
char *s_ptr;
fgets(s, 255, f);
sscanf(s, "%*s %*s %x %x %x %x %s %s %s", &apm_flags, &ac_stat,
&bat_stat, &bat_flags, s1, s2, s3);
s1[strlen(s1) - 1] = 0;
bat_val = atoi(s1);
if (!strcmp(s3, "sec"))
time_val = atoi(s2);
else if (!strcmp(s3, "min"))
time_val = atoi(s2) * 60;
fclose(f);
up = bat_val - prev_bat_val;
up2 = up;
for (i = 0; i < 16; i++)
up2 = +prev_up[i];
up2 = (up2 * 60) / 17;
prev_up[prev_count] = up;
prev_count++;
if (prev_count >= 16)
prev_count = 0;
s_ptr = s;
if( bat_flags != 0xff
&& bat_flags & 0x80 )
{
s_ptr += sprintf( s_ptr, "no battery" );
}
else
{
if( bat_val > 0 )
s_ptr += sprintf( s_ptr, "%i%%", bat_val );
switch( bat_stat )
{
case 0:
s_ptr += sprintf( s_ptr, ", high" );
break;
case 1:
s_ptr += sprintf( s_ptr, ", low" );
break;
case 2:
s_ptr += sprintf( s_ptr, ", crit." );
break;
case 3:
s_ptr += sprintf( s_ptr, ", charge" );
break;
}
}
s_ptr += sprintf( s_ptr, "\n" );
if( ac_stat == 1 )
if (bat_flags != 0xff && bat_flags & 0x80)
{
s_ptr += sprintf(s_ptr, "AC on-line" );
s_ptr += sprintf(s_ptr, "no battery");
}
else
{
hours = time_val / 3600;
minutes = (time_val / 60) % 60;
if (up2 > 0)
s_ptr += sprintf(s_ptr, "(%i:%02i)\n%i:%02i",
(((100 - bat_val) * 2 * 60) / up2) / 60,
(((100 - bat_val) * 2 * 60) / up2) % 60,
hours, minutes);
else
s_ptr += sprintf(s_ptr, "%i:%02i", hours, minutes);
if (bat_val > 0)
s_ptr += sprintf(s_ptr, "%i%%", bat_val);
switch (bat_stat)
{
case 0:
s_ptr += sprintf(s_ptr, ", high");
break;
case 1:
s_ptr += sprintf(s_ptr, ", low");
break;
case 2:
s_ptr += sprintf(s_ptr, ", crit.");
break;
case 3:
s_ptr += sprintf(s_ptr, ", charge");
break;
}
}
Epplet_change_label(label, s);
s_ptr += sprintf(s_ptr, "\n");
sprintf(s, EROOT"/epplet_data/E-Power//E-Power-Bat-%i.png",
((bat_val + 5) / 10) * 10);
Epplet_change_image(image, 44, 24, s);
Epplet_timer(cb_timer, NULL, 30.0, "TIMER");
if (ac_stat == 1)
{
s_ptr += sprintf(s_ptr, "AC on-line");
}
else
{
hours = time_val / 3600;
minutes = (time_val / 60) % 60;
if (up2 > 0)
s_ptr += sprintf(s_ptr, "(%i:%02i)\n%i:%02i",
(((100 - bat_val) * 2 * 60) / up2) / 60,
(((100 - bat_val) * 2 * 60) / up2) % 60,
hours, minutes);
else
s_ptr += sprintf(s_ptr, "%i:%02i", hours, minutes);
}
Epplet_change_label(label, s);
prev_bat_val = bat_val;
sprintf(s, EROOT "/epplet_data/E-Power//E-Power-Bat-%i.png",
((bat_val + 5) / 10) * 10);
Epplet_change_image(image, 44, 24, s);
Epplet_timer(cb_timer, NULL, 30.0, "TIMER");
prev_bat_val = bat_val;
}
data = NULL;
}
@ -354,45 +353,42 @@ cb_help(void *data)
static void
cb_suspend(void *data)
{
system("/usr/bin/apm -s");
return;
data=NULL;
system("/usr/bin/apm -s");
return;
data = NULL;
}
static void
cb_sleep(void *data)
{
system("/usr/bin/apm -S");
return;
data=NULL;
system("/usr/bin/apm -S");
return;
data = NULL;
}
int
main(int argc, char **argv)
{
Epplet_Init("E-Power", "0.1", "Enlightenment Laptop Power Epplet",
3, 3, argc, argv, 0);
3, 3, argc, argv, 0);
atexit(Epplet_cleanup);
Epplet_timer(cb_timer, NULL, 30.0, "TIMER");
b_close = Epplet_create_button(NULL, NULL,
2, 2, 0, 0, "CLOSE", 0, NULL,
cb_close, NULL);
2, 2, 0, 0, "CLOSE", 0, NULL, cb_close, NULL);
b_help = Epplet_create_button(NULL, NULL,
34, 2, 0, 0, "HELP", 0, NULL,
cb_help, NULL);
34, 2, 0, 0, "HELP", 0, NULL, cb_help, NULL);
b_suspend = Epplet_create_button(NULL, NULL,
2, 34, 0, 0, "PAUSE", 0, NULL,
cb_suspend, NULL);
2, 34, 0, 0, "PAUSE", 0, NULL,
cb_suspend, NULL);
b_sleep = Epplet_create_button(NULL, NULL,
34, 34, 0, 0, "STOP", 0, NULL,
cb_sleep, NULL);
Epplet_gadget_show(image =
Epplet_create_image
(2, 2, 44, 24,
EROOT"/epplet_data/E-Power/E-Power-Bat-100.png"));
Epplet_gadget_show(label =
Epplet_create_label
(2, 28, "APM, ACPI\nmissing", 1));
34, 34, 0, 0, "STOP", 0, NULL,
cb_sleep, NULL);
Epplet_gadget_show(image =
Epplet_create_image
(2, 2, 44, 24,
EROOT "/epplet_data/E-Power/E-Power-Bat-100.png"));
Epplet_gadget_show(label =
Epplet_create_label(2, 28, "APM, ACPI\nmissing", 1));
Epplet_register_focus_in_handler(cb_in, NULL);
Epplet_register_focus_out_handler(cb_out, NULL);
cb_timer(NULL);