mozglue/build/cpuacct.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 /*
michael@0 2 * Copyright (C) 2010 The Android Open Source Project
michael@0 3 * All rights reserved.
michael@0 4 *
michael@0 5 * Redistribution and use in source and binary forms, with or without
michael@0 6 * modification, are permitted provided that the following conditions
michael@0 7 * are met:
michael@0 8 * * Redistributions of source code must retain the above copyright
michael@0 9 * notice, this list of conditions and the following disclaimer.
michael@0 10 * * Redistributions in binary form must reproduce the above copyright
michael@0 11 * notice, this list of conditions and the following disclaimer in
michael@0 12 * the documentation and/or other materials provided with the
michael@0 13 * distribution.
michael@0 14 *
michael@0 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
michael@0 16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
michael@0 17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
michael@0 18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
michael@0 19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
michael@0 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
michael@0 21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
michael@0 22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
michael@0 23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@0 24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@0 25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@0 26 * SUCH DAMAGE.
michael@0 27 */
michael@0 28 #include <unistd.h>
michael@0 29 #include <errno.h>
michael@0 30 #include <sys/stat.h>
michael@0 31 #include <fcntl.h>
michael@0 32 #include <stdio.h>
michael@0 33 #include "cpuacct.h"
michael@0 34
michael@0 35 int cpuacct_add(uid_t uid)
michael@0 36 {
michael@0 37 int count;
michael@0 38 int fd;
michael@0 39 char buf[80];
michael@0 40
michael@0 41 count = snprintf(buf, sizeof(buf), "/acct/uid/%d/tasks", uid);
michael@0 42 fd = open(buf, O_RDWR|O_CREAT|O_TRUNC|O_SYNC);
michael@0 43 if (fd < 0) {
michael@0 44 /* Note: sizeof("tasks") returns 6, which includes the NULL char */
michael@0 45 buf[count - sizeof("tasks")] = 0;
michael@0 46 if (mkdir(buf, 0775) < 0)
michael@0 47 return -errno;
michael@0 48
michael@0 49 /* Note: sizeof("tasks") returns 6, which includes the NULL char */
michael@0 50 buf[count - sizeof("tasks")] = '/';
michael@0 51 fd = open(buf, O_RDWR|O_CREAT|O_TRUNC|O_SYNC);
michael@0 52 }
michael@0 53 if (fd < 0)
michael@0 54 return -errno;
michael@0 55
michael@0 56 write(fd, "0", 2);
michael@0 57 if (close(fd))
michael@0 58 return -errno;
michael@0 59
michael@0 60 return 0;
michael@0 61 }

mercurial