Tab indent C programs for consistency
This commit is contained in:
		
							parent
							
								
									3c65a36fd2
								
							
						
					
					
						commit
						1ac5e64193
					
				
					 4 changed files with 240 additions and 242 deletions
				
			
		| 
						 | 
				
			
			@ -17,149 +17,147 @@ static char * brightnessfile = "/sys/devices/platform/backlight/backlight/backli
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
void updatepineled(int red, int brightness) {
 | 
			
		||||
    sprintf(
 | 
			
		||||
      pineledcommand, 
 | 
			
		||||
      "sh -c 'echo %d > /sys/class/leds/%s:indicator/brightness'",
 | 
			
		||||
      brightness, 
 | 
			
		||||
      red ? "red" : "blue"
 | 
			
		||||
    );
 | 
			
		||||
    system(pineledcommand);
 | 
			
		||||
	sprintf(
 | 
			
		||||
		pineledcommand, 
 | 
			
		||||
		"sh -c 'echo %d > /sys/class/leds/%s:indicator/brightness'",
 | 
			
		||||
		brightness, 
 | 
			
		||||
		red ? "red" : "blue"
 | 
			
		||||
	);
 | 
			
		||||
	system(pineledcommand);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void updatescreenon(int on) {
 | 
			
		||||
    int b = on ? oldbrightness : 0;
 | 
			
		||||
    sprintf(screentogglecommand, "sh -c 'echo %d > %s'", b, brightnessfile);
 | 
			
		||||
    system(screentogglecommand);
 | 
			
		||||
    updatepineled(0, b ? 1 : 0);
 | 
			
		||||
    updatepineled(1, b ? 0 : 1);
 | 
			
		||||
	int b = on ? oldbrightness : 0;
 | 
			
		||||
	sprintf(screentogglecommand, "sh -c 'echo %d > %s'", b, brightnessfile);
 | 
			
		||||
	system(screentogglecommand);
 | 
			
		||||
	updatepineled(0, b ? 1 : 0);
 | 
			
		||||
	updatepineled(1, b ? 0 : 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cleanup() {
 | 
			
		||||
  updatescreenon(1);
 | 
			
		||||
  updatepineled(1, 0);
 | 
			
		||||
  updatepineled(0, 0);
 | 
			
		||||
	updatescreenon(1);
 | 
			
		||||
	updatepineled(1, 0);
 | 
			
		||||
	updatepineled(0, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void die(const char *err, ...) {
 | 
			
		||||
        fprintf(stderr, "Error: %s", err);
 | 
			
		||||
        cleanup();
 | 
			
		||||
        exit(1);
 | 
			
		||||
	fprintf(stderr, "Error: %s", err);
 | 
			
		||||
	cleanup();
 | 
			
		||||
	exit(1);
 | 
			
		||||
}
 | 
			
		||||
static void usage(void) {
 | 
			
		||||
        die("usage: slock [-v] [cmd [arg ...]]\n");
 | 
			
		||||
	die("usage: slock [-v] [cmd [arg ...]]\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Loosely derived from suckless' slock's lockscreen binding logic but
 | 
			
		||||
// alot more coarse, intentionally so can be triggered while grab_key
 | 
			
		||||
// for dwm multikey path already holding..
 | 
			
		||||
void lockscreen(Display *dpy, int screen) {
 | 
			
		||||
  int i, ptgrab, kbgrab;
 | 
			
		||||
  //XSetWindowAttributes wa;
 | 
			
		||||
  Window root;
 | 
			
		||||
  //win,
 | 
			
		||||
  root = RootWindow(dpy, screen);
 | 
			
		||||
  //wa.override_redirect = 1;
 | 
			
		||||
  //win = XCreateWindow(dpy, root, 0, 0,
 | 
			
		||||
  //                          DisplayWidth(dpy, screen),
 | 
			
		||||
  //                          DisplayHeight(dpy, screen),
 | 
			
		||||
  //                          0, DefaultDepth(dpy, screen),
 | 
			
		||||
  //                          CopyFromParent,
 | 
			
		||||
  //                          DefaultVisual(dpy, screen),
 | 
			
		||||
  //                          CWOverrideRedirect | CWBackPixel, &wa);
 | 
			
		||||
  for (i = 0, ptgrab = kbgrab = -1; i < 9999999; i++) {
 | 
			
		||||
         if (ptgrab != GrabSuccess) {
 | 
			
		||||
                 ptgrab = XGrabPointer(dpy, root, False,
 | 
			
		||||
                                       ButtonPressMask | ButtonReleaseMask |
 | 
			
		||||
                                       PointerMotionMask, GrabModeAsync,
 | 
			
		||||
                                       GrabModeAsync, None, None, CurrentTime);
 | 
			
		||||
         }
 | 
			
		||||
         if (kbgrab != GrabSuccess) {
 | 
			
		||||
                 kbgrab = XGrabKeyboard(dpy, root, True,
 | 
			
		||||
                                        GrabModeAsync, GrabModeAsync, CurrentTime);
 | 
			
		||||
         }
 | 
			
		||||
          if (ptgrab == GrabSuccess && kbgrab == GrabSuccess) {
 | 
			
		||||
                  XSelectInput(dpy, root, SubstructureNotifyMask);
 | 
			
		||||
                  return;
 | 
			
		||||
          }
 | 
			
		||||
          usleep(100000);
 | 
			
		||||
  }
 | 
			
		||||
  return;
 | 
			
		||||
	int i, ptgrab, kbgrab;
 | 
			
		||||
	//XSetWindowAttributes wa;
 | 
			
		||||
	Window root;
 | 
			
		||||
	//win,
 | 
			
		||||
	root = RootWindow(dpy, screen);
 | 
			
		||||
	//wa.override_redirect = 1;
 | 
			
		||||
	//win = XCreateWindow(dpy, root, 0, 0,
 | 
			
		||||
	//                          DisplayWidth(dpy, screen),
 | 
			
		||||
	//                          DisplayHeight(dpy, screen),
 | 
			
		||||
	//                          0, DefaultDepth(dpy, screen),
 | 
			
		||||
	//                          CopyFromParent,
 | 
			
		||||
	//                          DefaultVisual(dpy, screen),
 | 
			
		||||
	//                          CWOverrideRedirect | CWBackPixel, &wa);
 | 
			
		||||
	for (i = 0, ptgrab = kbgrab = -1; i < 9999999; i++) {
 | 
			
		||||
		if (ptgrab != GrabSuccess) {
 | 
			
		||||
			ptgrab = XGrabPointer(dpy, root, False,
 | 
			
		||||
				ButtonPressMask | ButtonReleaseMask |
 | 
			
		||||
				PointerMotionMask, GrabModeAsync,
 | 
			
		||||
				GrabModeAsync, None, None, CurrentTime);
 | 
			
		||||
		}
 | 
			
		||||
		if (kbgrab != GrabSuccess) {
 | 
			
		||||
			kbgrab = XGrabKeyboard(dpy, root, True,
 | 
			
		||||
				GrabModeAsync, GrabModeAsync, CurrentTime);
 | 
			
		||||
		}
 | 
			
		||||
		if (ptgrab == GrabSuccess && kbgrab == GrabSuccess) {
 | 
			
		||||
			XSelectInput(dpy, root, SubstructureNotifyMask);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		usleep(100000);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
readinputloop(Display *dpy, int screen) {
 | 
			
		||||
        KeySym keysym;
 | 
			
		||||
        XEvent ev;
 | 
			
		||||
        char buf[32];
 | 
			
		||||
	KeySym keysym;
 | 
			
		||||
	XEvent ev;
 | 
			
		||||
	char buf[32];
 | 
			
		||||
 | 
			
		||||
        while (running && !XNextEvent(dpy, &ev)) {
 | 
			
		||||
                if (ev.type == KeyPress) {
 | 
			
		||||
                        XLookupString(&ev.xkey, buf, sizeof(buf), &keysym, 0);
 | 
			
		||||
                        if (lastkeysym == keysym) {
 | 
			
		||||
                                lastkeyn++;
 | 
			
		||||
                        } else {
 | 
			
		||||
                                lastkeysym = keysym;
 | 
			
		||||
                                lastkeyn = 1;
 | 
			
		||||
                        }
 | 
			
		||||
	while (running && !XNextEvent(dpy, &ev)) {
 | 
			
		||||
		if (ev.type == KeyPress) {
 | 
			
		||||
			XLookupString(&ev.xkey, buf, sizeof(buf), &keysym, 0);
 | 
			
		||||
			if (lastkeysym == keysym) {
 | 
			
		||||
				lastkeyn++;
 | 
			
		||||
			} else {
 | 
			
		||||
				lastkeysym = keysym;
 | 
			
		||||
				lastkeyn = 1;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
                        if (lastkeyn < 3)
 | 
			
		||||
                                continue;
 | 
			
		||||
			if (lastkeyn < 3)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
                        lastkeyn = 0;
 | 
			
		||||
                        lastkeysym = NULL;
 | 
			
		||||
 | 
			
		||||
                        switch (keysym) {
 | 
			
		||||
                        case XF86XK_AudioRaiseVolume:
 | 
			
		||||
                        case XF86XK_AudioLowerVolume:
 | 
			
		||||
                              screenon = !screenon;
 | 
			
		||||
                              updatescreenon(screenon);
 | 
			
		||||
                              break;
 | 
			
		||||
                        case XF86XK_PowerOff:
 | 
			
		||||
                              cleanup();
 | 
			
		||||
                              running = 0;
 | 
			
		||||
                              break;
 | 
			
		||||
                        }
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
			lastkeyn = 0;
 | 
			
		||||
			lastkeysym = NULL;
 | 
			
		||||
 | 
			
		||||
			switch (keysym) {
 | 
			
		||||
				case XF86XK_AudioRaiseVolume:
 | 
			
		||||
				case XF86XK_AudioLowerVolume:
 | 
			
		||||
					screenon = !screenon;
 | 
			
		||||
					updatescreenon(screenon);
 | 
			
		||||
					break;
 | 
			
		||||
				case XF86XK_PowerOff:
 | 
			
		||||
					cleanup();
 | 
			
		||||
					running = 0;
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
getoldbrightness() {
 | 
			
		||||
  char * buffer = 0;
 | 
			
		||||
  long length;
 | 
			
		||||
  FILE * f = fopen(brightnessfile, "rb");
 | 
			
		||||
  if (f) {
 | 
			
		||||
    fseek(f, 0, SEEK_END);
 | 
			
		||||
    length = ftell(f);
 | 
			
		||||
    fseek(f, 0, SEEK_SET);
 | 
			
		||||
    buffer = malloc(length);
 | 
			
		||||
    if (buffer) {
 | 
			
		||||
      fread(buffer, 1, length, f);
 | 
			
		||||
    }
 | 
			
		||||
    fclose(f);
 | 
			
		||||
  }
 | 
			
		||||
  if (buffer) {
 | 
			
		||||
    oldbrightness = atoi(buffer);
 | 
			
		||||
  }
 | 
			
		||||
	char * buffer = 0;
 | 
			
		||||
	long length;
 | 
			
		||||
	FILE * f = fopen(brightnessfile, "rb");
 | 
			
		||||
	if (f) {
 | 
			
		||||
		fseek(f, 0, SEEK_END);
 | 
			
		||||
		length = ftell(f);
 | 
			
		||||
		fseek(f, 0, SEEK_SET);
 | 
			
		||||
		buffer = malloc(length);
 | 
			
		||||
		if (buffer) {
 | 
			
		||||
			fread(buffer, 1, length, f);
 | 
			
		||||
		}
 | 
			
		||||
		fclose(f);
 | 
			
		||||
	}
 | 
			
		||||
	if (buffer) {
 | 
			
		||||
		oldbrightness = atoi(buffer);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main(int argc, char **argv) {
 | 
			
		||||
        Display *dpy;
 | 
			
		||||
        Screen *screen;
 | 
			
		||||
	Display *dpy;
 | 
			
		||||
	Screen *screen;
 | 
			
		||||
 | 
			
		||||
        if (setuid(0))
 | 
			
		||||
                die("setuid(0) failed\n");
 | 
			
		||||
        if (!(dpy = XOpenDisplay(NULL)))
 | 
			
		||||
                die("Cannot open display\n");
 | 
			
		||||
	if (setuid(0))
 | 
			
		||||
		die("setuid(0) failed\n");
 | 
			
		||||
	if (!(dpy = XOpenDisplay(NULL)))
 | 
			
		||||
		die("Cannot open display\n");
 | 
			
		||||
 | 
			
		||||
        screen = XDefaultScreen(dpy);
 | 
			
		||||
        XSync(dpy, 0);
 | 
			
		||||
        getoldbrightness();
 | 
			
		||||
        lockscreen(dpy, screen);
 | 
			
		||||
        updatescreenon(1);
 | 
			
		||||
        readinputloop(dpy, screen);
 | 
			
		||||
        return 0;
 | 
			
		||||
	screen = XDefaultScreen(dpy);
 | 
			
		||||
	XSync(dpy, 0);
 | 
			
		||||
	getoldbrightness();
 | 
			
		||||
	lockscreen(dpy, screen);
 | 
			
		||||
	updatescreenon(1);
 | 
			
		||||
	readinputloop(dpy, screen);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,39 +7,39 @@ char * pbpScreen = "/sys/class/backlight/edp-backlight/brightness";
 | 
			
		|||
char * ppScreen = "/sys/devices/platform/backlight/backlight/backlight/brightness";
 | 
			
		||||
 | 
			
		||||
void usage() {
 | 
			
		||||
  fprintf(stderr, "Usage: sxmo_setpinebacklight [number]\n");
 | 
			
		||||
	fprintf(stderr, "Usage: sxmo_setpinebacklight [number]\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void writeFile(char *filepath, int brightness) {
 | 
			
		||||
  FILE *f;
 | 
			
		||||
  f = fopen(filepath, "w+");
 | 
			
		||||
  fprintf(f, "%d\n", brightness);
 | 
			
		||||
  fclose(f);
 | 
			
		||||
	FILE *f;
 | 
			
		||||
	f = fopen(filepath, "w+");
 | 
			
		||||
	fprintf(f, "%d\n", brightness);
 | 
			
		||||
	fclose(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
  char * command;
 | 
			
		||||
  int brightness;
 | 
			
		||||
	char * command;
 | 
			
		||||
	int brightness;
 | 
			
		||||
 | 
			
		||||
  if (argc < 2) {
 | 
			
		||||
    usage();
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
  argc--;
 | 
			
		||||
  brightness = atoi(argv[argc--]);
 | 
			
		||||
	if (argc < 2) {
 | 
			
		||||
		usage();
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	argc--;
 | 
			
		||||
	brightness = atoi(argv[argc--]);
 | 
			
		||||
 | 
			
		||||
  if (setuid(0)) {
 | 
			
		||||
    fprintf(stderr, "setuid(0) failed\n");
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
	if (setuid(0)) {
 | 
			
		||||
		fprintf(stderr, "setuid(0) failed\n");
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  if (access(pbpScreen, F_OK) != -1) {
 | 
			
		||||
    writeFile(pbpScreen, brightness);
 | 
			
		||||
    fprintf(stderr, "Set PBP brightness to %d\n", brightness);
 | 
			
		||||
  } else if (access(ppScreen, F_OK) != -1) {
 | 
			
		||||
    writeFile(ppScreen, brightness);
 | 
			
		||||
    fprintf(stderr, "Set PP brightness to %d\n", brightness);
 | 
			
		||||
  } else {
 | 
			
		||||
    fprintf(stderr, "Neither PP or PBP Screen found!\n");
 | 
			
		||||
  }
 | 
			
		||||
	if (access(pbpScreen, F_OK) != -1) {
 | 
			
		||||
		writeFile(pbpScreen, brightness);
 | 
			
		||||
		fprintf(stderr, "Set PBP brightness to %d\n", brightness);
 | 
			
		||||
	} else if (access(ppScreen, F_OK) != -1) {
 | 
			
		||||
		writeFile(ppScreen, brightness);
 | 
			
		||||
		fprintf(stderr, "Set PP brightness to %d\n", brightness);
 | 
			
		||||
	} else {
 | 
			
		||||
		fprintf(stderr, "Neither PP or PBP Screen found!\n");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,53 +4,53 @@
 | 
			
		|||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
void usage() {
 | 
			
		||||
  fprintf(stderr, "Usage: setpineled [red|green|blue|white] [0-255]\n");
 | 
			
		||||
	fprintf(stderr, "Usage: setpineled [red|green|blue|white] [0-255]\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
  int brightness;
 | 
			
		||||
  char * color;
 | 
			
		||||
  char * command;
 | 
			
		||||
  char * type;
 | 
			
		||||
	int brightness;
 | 
			
		||||
	char * color;
 | 
			
		||||
	char * command;
 | 
			
		||||
	char * type;
 | 
			
		||||
 | 
			
		||||
  if (argc < 2) {
 | 
			
		||||
    usage();
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
  argc--;
 | 
			
		||||
  brightness = atoi(argv[argc--]);
 | 
			
		||||
	if (argc < 2) {
 | 
			
		||||
		usage();
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	argc--;
 | 
			
		||||
	brightness = atoi(argv[argc--]);
 | 
			
		||||
 | 
			
		||||
  if (brightness < 0 || brightness > 255) {
 | 
			
		||||
    usage();
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
	if (brightness < 0 || brightness > 255) {
 | 
			
		||||
		usage();
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  color = argv[argc--];
 | 
			
		||||
  if (
 | 
			
		||||
    strcmp(color, "red") && 
 | 
			
		||||
    strcmp(color, "blue") && 
 | 
			
		||||
    strcmp(color, "green") &&
 | 
			
		||||
    strcmp(color, "white")
 | 
			
		||||
  ) {
 | 
			
		||||
    usage();
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
	color = argv[argc--];
 | 
			
		||||
	if (
 | 
			
		||||
		strcmp(color, "red") && 
 | 
			
		||||
		strcmp(color, "blue") && 
 | 
			
		||||
		strcmp(color, "green") &&
 | 
			
		||||
		strcmp(color, "white")
 | 
			
		||||
	) {
 | 
			
		||||
		usage();
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  if (!strcmp(color, "white")) {
 | 
			
		||||
    type = "flash";
 | 
			
		||||
  } else {
 | 
			
		||||
    type = "indicator";
 | 
			
		||||
  }
 | 
			
		||||
	if (!strcmp(color, "white")) {
 | 
			
		||||
		type = "flash";
 | 
			
		||||
	} else {
 | 
			
		||||
		type = "indicator";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  command = malloc(80);
 | 
			
		||||
  sprintf(
 | 
			
		||||
    command,
 | 
			
		||||
    "sh -c 'echo %d > /sys/class/leds/%s:%s/brightness'",
 | 
			
		||||
    brightness, color, type
 | 
			
		||||
  );
 | 
			
		||||
  if (setuid(0)) {
 | 
			
		||||
    fprintf(stderr, "setuid(0) failed\n");
 | 
			
		||||
  } else {
 | 
			
		||||
    return system(command);
 | 
			
		||||
  }
 | 
			
		||||
	command = malloc(80);
 | 
			
		||||
	sprintf(
 | 
			
		||||
		command,
 | 
			
		||||
		"sh -c 'echo %d > /sys/class/leds/%s:%s/brightness'",
 | 
			
		||||
		brightness, color, type
 | 
			
		||||
	);
 | 
			
		||||
	if (setuid(0)) {
 | 
			
		||||
		fprintf(stderr, "setuid(0) failed\n");
 | 
			
		||||
	} else {
 | 
			
		||||
		return system(command);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,97 +14,97 @@
 | 
			
		|||
 | 
			
		||||
void syscall_error(int is_err, const char* fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
  va_list ap;
 | 
			
		||||
	va_list ap;
 | 
			
		||||
 | 
			
		||||
  if (!is_err)
 | 
			
		||||
          return;
 | 
			
		||||
	if (!is_err)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
  printf("ERROR: ");
 | 
			
		||||
  va_start(ap, fmt);
 | 
			
		||||
  vprintf(fmt, ap);
 | 
			
		||||
  va_end(ap);
 | 
			
		||||
  printf(": %s\n", strerror(errno));
 | 
			
		||||
	printf("ERROR: ");
 | 
			
		||||
	va_start(ap, fmt);
 | 
			
		||||
	vprintf(fmt, ap);
 | 
			
		||||
	va_end(ap);
 | 
			
		||||
	printf(": %s\n", strerror(errno));
 | 
			
		||||
 | 
			
		||||
  exit(1);
 | 
			
		||||
	exit(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int open_event_dev(const char* name_needle, int flags)
 | 
			
		||||
{
 | 
			
		||||
  char path[256];
 | 
			
		||||
  char name[256];
 | 
			
		||||
  int fd, ret;
 | 
			
		||||
	char path[256];
 | 
			
		||||
	char name[256];
 | 
			
		||||
	int fd, ret;
 | 
			
		||||
 | 
			
		||||
  // find the right device and open it
 | 
			
		||||
  for (int i = 0; i < 10; i++) {
 | 
			
		||||
          snprintf(path, sizeof path, "/dev/input/event%d", i);
 | 
			
		||||
          fd = open(path, flags);
 | 
			
		||||
          if (fd < 0)
 | 
			
		||||
                  continue;
 | 
			
		||||
	// find the right device and open it
 | 
			
		||||
	for (int i = 0; i < 10; i++) {
 | 
			
		||||
					snprintf(path, sizeof path, "/dev/input/event%d", i);
 | 
			
		||||
					fd = open(path, flags);
 | 
			
		||||
					if (fd < 0)
 | 
			
		||||
									continue;
 | 
			
		||||
 | 
			
		||||
          ret = ioctl(fd, EVIOCGNAME(256), name);
 | 
			
		||||
          if (ret < 0)
 | 
			
		||||
                  continue;
 | 
			
		||||
					ret = ioctl(fd, EVIOCGNAME(256), name);
 | 
			
		||||
					if (ret < 0)
 | 
			
		||||
									continue;
 | 
			
		||||
					
 | 
			
		||||
          if (strstr(name, name_needle))
 | 
			
		||||
                  return fd;
 | 
			
		||||
					if (strstr(name, name_needle))
 | 
			
		||||
									return fd;
 | 
			
		||||
					
 | 
			
		||||
          close(fd);
 | 
			
		||||
  }
 | 
			
		||||
					close(fd);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
  errno = ENOENT;
 | 
			
		||||
  return -1;
 | 
			
		||||
	errno = ENOENT;
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void usage() {
 | 
			
		||||
  fprintf(stderr, "Usage: sxmo_vibratepine duration_ms\n");
 | 
			
		||||
  fprintf(stderr, "       sxmo_vibratepine duration_ms strength_number\n");
 | 
			
		||||
	fprintf(stderr, "Usage: sxmo_vibratepine duration_ms\n");
 | 
			
		||||
	fprintf(stderr, "			 sxmo_vibratepine duration_ms strength_number\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char* argv[])
 | 
			
		||||
{
 | 
			
		||||
  int fd, ret;
 | 
			
		||||
  struct pollfd pfds[1];
 | 
			
		||||
  int effects;
 | 
			
		||||
	int fd, ret;
 | 
			
		||||
	struct pollfd pfds[1];
 | 
			
		||||
	int effects;
 | 
			
		||||
 | 
			
		||||
  int durationMs, strength;
 | 
			
		||||
	int durationMs, strength;
 | 
			
		||||
 | 
			
		||||
  if (argc < 2) {
 | 
			
		||||
    usage();
 | 
			
		||||
    return 1;
 | 
			
		||||
  }
 | 
			
		||||
  argc--;
 | 
			
		||||
	if (argc < 2) {
 | 
			
		||||
		usage();
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	argc--;
 | 
			
		||||
 | 
			
		||||
  if (argc > 1) {
 | 
			
		||||
    strength = atoi(argv[argc--]);
 | 
			
		||||
  } else {
 | 
			
		||||
    strength = 4000;
 | 
			
		||||
  }
 | 
			
		||||
	if (argc > 1) {
 | 
			
		||||
		strength = atoi(argv[argc--]);
 | 
			
		||||
	} else {
 | 
			
		||||
		strength = 4000;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  durationMs = atoi(argv[argc--]);
 | 
			
		||||
	durationMs = atoi(argv[argc--]);
 | 
			
		||||
 | 
			
		||||
  fd = open_event_dev("vibrator", O_RDWR | O_CLOEXEC);
 | 
			
		||||
  syscall_error(fd < 0, "Can't open vibrator event device");
 | 
			
		||||
  ret = ioctl(fd, EVIOCGEFFECTS, &effects);
 | 
			
		||||
  syscall_error(ret < 0, "EVIOCGEFFECTS failed");
 | 
			
		||||
	fd = open_event_dev("vibrator", O_RDWR | O_CLOEXEC);
 | 
			
		||||
	syscall_error(fd < 0, "Can't open vibrator event device");
 | 
			
		||||
	ret = ioctl(fd, EVIOCGEFFECTS, &effects);
 | 
			
		||||
	syscall_error(ret < 0, "EVIOCGEFFECTS failed");
 | 
			
		||||
 | 
			
		||||
  struct ff_effect e = {
 | 
			
		||||
          .type = FF_RUMBLE,
 | 
			
		||||
          .id = -1,
 | 
			
		||||
          .u.rumble = { .strong_magnitude = strength },
 | 
			
		||||
  };
 | 
			
		||||
	struct ff_effect e = {
 | 
			
		||||
					.type = FF_RUMBLE,
 | 
			
		||||
					.id = -1,
 | 
			
		||||
					.u.rumble = { .strong_magnitude = strength },
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
  ret = ioctl(fd, EVIOCSFF, &e);
 | 
			
		||||
  syscall_error(ret < 0, "EVIOCSFF failed");
 | 
			
		||||
	ret = ioctl(fd, EVIOCSFF, &e);
 | 
			
		||||
	syscall_error(ret < 0, "EVIOCSFF failed");
 | 
			
		||||
 | 
			
		||||
  struct input_event play = { .type = EV_FF, .code = e.id, .value = 3 };
 | 
			
		||||
  ret = write(fd, &play, sizeof play);
 | 
			
		||||
  syscall_error(ret < 0, "write failed");
 | 
			
		||||
	struct input_event play = { .type = EV_FF, .code = e.id, .value = 3 };
 | 
			
		||||
	ret = write(fd, &play, sizeof play);
 | 
			
		||||
	syscall_error(ret < 0, "write failed");
 | 
			
		||||
 | 
			
		||||
  usleep(durationMs * 1000);
 | 
			
		||||
	usleep(durationMs * 1000);
 | 
			
		||||
 | 
			
		||||
  ret = ioctl(fd, EVIOCRMFF, e.id);
 | 
			
		||||
  syscall_error(ret < 0, "EVIOCRMFF failed");
 | 
			
		||||
	ret = ioctl(fd, EVIOCRMFF, e.id);
 | 
			
		||||
	syscall_error(ret < 0, "EVIOCRMFF failed");
 | 
			
		||||
 | 
			
		||||
  close(fd);
 | 
			
		||||
  return 0;
 | 
			
		||||
	close(fd);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue