// rdcleandirs.cpp // // Remove stale lockfiles from user directories. // // (C) Copyright 2010,2016 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // #include #include #include #include #include #include #include #include #include #include MainObject::MainObject(QObject *parent) :QObject(parent) { struct passwd *pwd=NULL; // // Read Command Options // RDCmdSwitch *cmd= new RDCmdSwitch(qApp->argc(),qApp->argv(),"rdcleandirs",RDCLEANDIRS_USAGE); for(unsigned i=0;ikeys();i++) { } if(!cmd->allProcessed()) { fprintf(stderr,"rdcleandirs: unknown option\n"); exit(256); } // // Verify that we have root permissions // if(getuid()!=0) { fprintf(stderr,"rdcleandirs: this program requires root permissions\n"); exit(256); } // // Iterate through the user database // while((pwd=getpwent())!=NULL) { QString user=QString(pwd->pw_name); QString base=RDGetBasePart(pwd->pw_shell); QString home=QString(pwd->pw_dir); if((user!="mysql")&& (base!="nologin")&& (base!="null")&& (base!="false")&& (base!="sync")&& (base!="shutdown")&& (base!="halt")&& (base!="reboot")) { QFile::remove(home+"/.rdairplaylock"); } } endpwent(); exit(0); } int main(int argc,char *argv[]) { QApplication a(argc,argv,false); new MainObject(); return a.exec(); }