nis-util  1.0.D108
lib/space/automap/functor/direct.cc
Go to the documentation of this file.
00001 //
00002 // nis-util - NIS Administration Utilities
00003 // Copyright (C) 2012 Peter Miller
00004 //
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation; either version 2 of the License, or (at
00008 // your option) any later version.
00009 //
00010 // This program is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License along
00016 // with this program. If not, see <http://www.gnu.org/licenses/>.
00017 //
00018 
00019 #include <lib/ac/string.h>
00020 
00021 #include <lib/space/automap/functor/direct.h>
00022 #include <lib/space/automap.h>
00023 
00024 
00025 space_automap_functor_direct::~space_automap_functor_direct()
00026 {
00027 }
00028 
00029 
00030 space_automap_functor_direct::space_automap_functor_direct(
00031     space_automap *a_context
00032 ) :
00033     context(a_context)
00034 {
00035 }
00036 
00037 
00038 void
00039 space_automap_functor_direct::walk(const space_automap_row::pointer &rp)
00040 {
00041     const mount_point &mp = rp->get_mount_point();
00042     if (!mp.is_absolute())
00043     {
00044         rcstring suggest = mp.get_mount_point();
00045         suggest = suggest.replace("/", "-", suggest.size());
00046         suggest = "/" + mp.get_mount_point();
00047         context->error
00048         (
00049             mp.get_source_location(),
00050             "mount points must be absolute for direct maps, "
00051                 "suggest %s instead",
00052             suggest.quote_c().c_str()
00053         );
00054         return;
00055     }
00056     if (strchr(mp.get_mount_point().c_str() + 1, '/'))
00057     {
00058         rcstring suggest = mp.get_mount_point();
00059         suggest = suggest.substr(1, suggest.size());
00060         suggest = "/" + suggest.replace("/", "-", suggest.size());
00061         context->error
00062         (
00063             mp.get_source_location(),
00064             "mount points may not have sub-directories, "
00065                 "suggest %s instead",
00066             suggest.quote_c().c_str()
00067         );
00068         return;
00069     }
00070 }
00071 
00072 
00073 // vim: set ts=8 sw=4 et :