コード例 #1
0
ファイル: 4509.cpp プロジェクト: ahmatjan/KeepLearning
bool is_invade(int h1, int m1, int h2, int m2, int h, int m) //判断改时间点是否被这件事占用
{
    if (is_later(h1, m1, h, m) && is_former(h2, m2, h, m))
        return true;
    else
        return false;
}
コード例 #2
0
static int fscd_lookup(struct workspace_object_struct *object, struct userpolicy_struct *userpolicy, struct entry_struct *entry, char *path, struct fuse_entry_param *e)
{
    int nreturn=-ENOENT;
    struct resource_struct *resource=object->resource;

    if (entry->inode) {
	struct entry_mountdata_struct *fscd_mountdata=NULL;

	logoutput("fscd_lookup: revalidate %s", entry->name);

	/* it's a revalidate */

	copy_stat(&e->attr, &entry->inode->st);

	e->attr_timeout=3600;
	e->entry_timeout=3600;

	nreturn=0;

	/* lookup fscd_mountdata to watch the mount command */

	fscd_mountdata=lookup_entry_mountdata(entry);

	if (! fscd_mountdata) {
	    int res;

	    /* no previous mount pending/mounted/failed */

	    fscd_mountdata=create_entry_mountdata(entry);

	    if (fscd_mountdata) {

		fscd_mountdata->entry=entry;
		fscd_mountdata->workspace_mount=object->workspace_mount;
		fscd_mountdata->mountstatus=OBJECT_MOUNTSTATUS_UNMOUNTED;
		get_current_time(&fscd_mountdata->mounttime);

	    } else {

		nreturn=-ENOMEM;

	    }

	}

	if (fscd_mountdata) {

	    /* only remount if at least some time ago */

	    if (fscd_mountdata->mountstatus==OBJECT_MOUNTSTATUS_FAILED) {
		struct timespec rightnow;

		get_current_time(&rightnow);

		if (is_later(&rightnow, &fscd_mountdata->mounttime, cdrom_options.fscd_remount_timeout_onerror, 0)==1) {

		    /* remount */

		    fscd_mountdata->mountstatus=OBJECT_MOUNTSTATUS_UNMOUNTED;
		    fscd_mountdata->mounttime.tv_sec=rightnow.tv_sec;
		    fscd_mountdata->mounttime.tv_nsec=rightnow.tv_nsec;

		}

	    }

	    if (fscd_mountdata->mountstatus==OBJECT_MOUNTSTATUS_PENDING) {

		wait_for_mount(fscd_mountdata, cdrom_options.fscd_mount_timeout);

	    }

	    if (fscd_mountdata->mountstatus==OBJECT_MOUNTSTATUS_UNMOUNTED) {

		/* only mount when it's not mounted */

		send_internal_message(INTERNALMESSAGE_TYPE_MOUNTOBJECT, (void *) object);

	    }

	}

    }

    return nreturn;

}