~noskcaj/ubuntu/trusty/xfce4-power-manager/systemd

« back to all changes in this revision

Viewing changes to src/xfpm-polkit.c

  • Committer: Bazaar Package Importer
  • Author(s): Yves-Alexis Perez
  • Date: 2011-04-22 23:32:17 UTC
  • mto: (21.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: james.westby@ubuntu.com-20110422233217-u0b0sn29vari4v03
Tags: 1.0.10-3
* debian/patches:
  - 0001-Solaris-specific-code-for-determining-the-start-time cherry-picked
    from master. We don't have solaris but it should fix the build-failure
    on GNU/Hurd anyway.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
 
33
33
#include <sys/types.h>
34
34
 
35
 
#if defined(__FreeBSD__)
36
 
#include <sys/stat.h>
37
 
#else
 
35
#if defined(__linux)
38
36
#include <sys/param.h>
39
37
#include <sys/sysctl.h>
40
38
#include <sys/user.h>
 
39
#elif defined(__FreeBSD__)
 
40
#include <sys/stat.h>
 
41
#elif defined(__SVR4) || defined(__sun)
 
42
#include <fcntl.h>
 
43
#include <procfs.h>
41
44
#endif
42
45
 
43
46
#include <errno.h>
115
118
get_start_time_for_pid (pid_t pid)
116
119
{
117
120
    guint64 start_time;
118
 
#if !defined(__FreeBSD__)
 
121
#if defined(__linux)
119
122
    gchar *filename;
120
123
    gchar *contents;
121
124
    size_t length;
172
175
    g_free (filename);
173
176
    g_free (contents);
174
177
    
175
 
#else /*if !defined(__FreeBSD__)*/
 
178
#elif defined(__FreeBSD__)
176
179
 
177
180
    struct kinfo_proc p;
178
181
    
189
192
    start_time = (guint64) p.ki_start.tv_sec;
190
193
    
191
194
out:
 
195
#elif defined(__SVR4) || defined(__sun)
 
196
 
 
197
    psinfo_t p;
 
198
    gchar *filename;
 
199
    int fd;
 
200
 
 
201
    start_time = 0;
 
202
 
 
203
    filename = g_strdup_printf ("/proc/%d/psinfo", (int) pid);
 
204
    if ((fd = open(filename, O_RDONLY)) < 0)
 
205
    {
 
206
        g_warning ("Error opening %s (%s)",
 
207
                   filename,
 
208
                   g_strerror (errno));
 
209
        goto out;
 
210
    }
 
211
    if (read(fd, &p, sizeof (p)) != sizeof (p))
 
212
    {
 
213
        g_warning ("Error reading %s",
 
214
                   filename);
 
215
        close(fd);
 
216
        goto out;
 
217
    }
 
218
    start_time = (guint64) p.pr_start.tv_sec;
 
219
    close(fd);
 
220
out:
 
221
    g_free (filename);
192
222
#endif
193
223
    
194
224
    return start_time;