blob: aad24fc1a2b66c915aac60e32844a102c55d8c05 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <lib/fdio/watcher.h>
zx_status_t callback(int dirfd, int event, const char* fn, void* cookie) {
const char* path = cookie;
switch (event) {
case WATCH_EVENT_ADD_FILE:
fprintf(stderr, "watch: added '%s/%s'\n", path, fn);
break;
case WATCH_EVENT_REMOVE_FILE:
fprintf(stderr, "watch: removed '%s/%s'\n", path, fn);
break;
case WATCH_EVENT_IDLE:
fprintf(stderr, "watch: waiting...\n");
break;
}
return ZX_OK;
}
int main(int argc, char** argv) {
if (argc != 2) {
return -1;
}
int fd;
if ((fd = open(argv[1], O_DIRECTORY | O_RDONLY)) < 0) {
fprintf(stderr, "cannot open directory '%s'\n", argv[1]);
}
zx_status_t status;
if ((status = fdio_watch_directory(fd, callback, ZX_TIME_INFINITE, argv[1])) < 0) {
fprintf(stderr, "fdio watch directory failed: %d\n", status);
return -1;
}
return 0;
}