New command: flock.

The brillo folks wanted this in a shell script they're porting over
(so I've only implemented the fd style they wanted, not the named file
style).

-- 
Elliott Hughes - http://who/enh - http://jessies.org/~enh/
Android native code/tools questions? Mail me/drop by/add me as a reviewer.
/* flock.c - manage advisory file locks
 *
 * Copyright 2015 The Android Open Source Project

USE_FLOCK(NEWTOY(flock, "<1>1nsux[-sux]", TOYFLAG_USR|TOYFLAG_BIN))

config FLOCK
  bool "flock"
  default y
  help
    usage: flock [-sxun] fd

    Manage advisory file locks.

    -s	Shared lock.
    -x	Exclusive lock (default).
    -u	Unlock.
    -n	Non-blocking: fail rather than wait for the lock.
*/

#define FOR_flock
#include "toys.h"

#include <sys/file.h>

void flock_main(void)
{
  int fd = xstrtol(*toys.optargs, NULL, 10);
  int op;

  if ((toys.optflags & FLAG_u)) op = LOCK_UN;
  else op = (toys.optflags & FLAG_s) ? LOCK_SH : LOCK_EX;

  if ((toys.optflags & FLAG_n)) op |= LOCK_NB;

  if (flock(fd, op)) {
    if ((op & LOCK_NB) && errno == EAGAIN) toys.exitval = 1;
    else perror_exit("flock");
  }
}
_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to