Blame gio/inotify/inotify-sub.c

Packit ae235b
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
Packit ae235b
Packit ae235b
/* inotify-sub.c - GVFS Monitor based on inotify.
Packit ae235b
Packit ae235b
   Copyright (C) 2006 John McCutchan
Packit ae235b
Packit ae235b
   This library is free software; you can redistribute it and/or
Packit ae235b
   modify it under the terms of the GNU Lesser General Public
Packit ae235b
   License as published by the Free Software Foundation; either
Packit ae235b
   version 2.1 of the License, or (at your option) any later version.
Packit ae235b
Packit ae235b
   This library is distributed in the hope that it will be useful,
Packit ae235b
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit ae235b
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit ae235b
   Lesser General Public License for more details.
Packit ae235b
Packit ae235b
   You should have received a copy of the GNU Lesser General Public License
Packit ae235b
   along with this library; if not, see <http://www.gnu.org/licenses/>.
Packit ae235b
Packit ae235b
   Authors: 
Packit ae235b
		 John McCutchan <john@johnmccutchan.com>
Packit ae235b
*/
Packit ae235b
Packit ae235b
#include "config.h"
Packit ae235b
#include <string.h>
Packit ae235b
#include <glib.h>
Packit ae235b
Packit ae235b
#include "inotify-sub.h"
Packit ae235b
Packit ae235b
static gboolean is_debug_enabled = FALSE;
Packit ae235b
#define IS_W if (is_debug_enabled) g_warning
Packit ae235b
Packit ae235b
static gchar*
Packit ae235b
dup_dirname (const gchar *dirname)
Packit ae235b
{
Packit ae235b
  gchar *d_dirname = g_strdup (dirname);
Packit ae235b
  size_t len = strlen (d_dirname);
Packit ae235b
  
Packit ae235b
  if (d_dirname[len - 1] == '/')
Packit ae235b
    d_dirname[len - 1] = '\0';
Packit ae235b
  
Packit ae235b
  return d_dirname;
Packit ae235b
}
Packit ae235b
Packit ae235b
inotify_sub*
Packit ae235b
_ih_sub_new (const gchar *dirname, 
Packit ae235b
             const gchar *filename,
Packit ae235b
             gboolean     watch_hardlinks,
Packit ae235b
             gpointer     user_data)
Packit ae235b
{
Packit ae235b
  inotify_sub *sub = NULL;
Packit ae235b
  
Packit ae235b
  sub = g_new0 (inotify_sub, 1);
Packit ae235b
  sub->dirname = dup_dirname (dirname);
Packit ae235b
  sub->filename = g_strdup (filename);
Packit ae235b
  sub->hardlinks = watch_hardlinks;
Packit ae235b
  sub->user_data = user_data;
Packit ae235b
Packit ae235b
  IS_W ("new subscription for %s being setup\n", sub->dirname);
Packit ae235b
  
Packit ae235b
  return sub;
Packit ae235b
}
Packit ae235b
Packit ae235b
void
Packit ae235b
_ih_sub_free (inotify_sub *sub)
Packit ae235b
{
Packit ae235b
  g_free (sub->dirname);
Packit ae235b
  g_free (sub->filename);
Packit ae235b
  g_free (sub);
Packit ae235b
}