/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2010, Tomasz Sowa * All rights reserved. * */ #include "mkdir.h" #include "functions.h" namespace Fun { Mkdir::Mkdir() { fun.url = L"mkdir"; } bool Mkdir::HasAccess(const Item & item) { // you can create a directory only in a directory if( item.type != Item::dir ) return false; if( request->session->puser && request->session->puser->super_user ) // super user can use mkdir everywhere return true; if( !system->HasWriteAccess(item) ) return false; if( !system->mounts.pmount->IsPar(system->mounts.MountParMkdirOn()) ) return true; if( system->mounts.pmount->IsArg(system->mounts.MountParMkdirOn(), request->dir_tab.size()) ) return true; return false; } bool Mkdir::HasAccess() { if( request->is_item || !HasAccess(*request->dir_tab.back()) ) return false; return true; } void Mkdir::PostFunMkdir(bool add_to_dir_tab, int privileges) { functions->ReadItem(request->item, Item::dir); functions->SetUser(request->item); request->item.privileges = privileges; request->status = system->dirs.AddDirectory(request->item, add_to_dir_tab); if( request->status == WINIX_ERR_OK ) { system->RedirectTo(request->item); } else { log << log1 << "Content: PostFunMkdir: Error: " << request->status << logend; } } void Mkdir::MakePost() { PostFunMkdir(false, 0755); } } // namespace