Date: Sat, 26 Aug 2006 19:19:06 -0300 From: Mario Lobo <mlobo@digiart.art.br> To: freebsd-hackers@freebsd.org Subject: A handy utility (at least for me) Message-ID: <200608261919.07106.mlobo@digiart.art.br>
next in thread | raw e-mail | index | archive | help
Hi; My /usr/ports directory was occuping 24 gigs, of which 20 was just from the 'work' directories ! Removing them one by one was a pain so I wrote this little utility to wipe them off. If you find it useful, pass it on. Its not a big deal but thanks for keeping the credits on it. Last but not least: "if any 'member' of your hard disk is caught and killed, the programer will deny any knowledge of your actions. This program will NOT self-destruct in 5 seconds." CODE SNIP ------------------------------------------------------- /*************************************************************************** * Copyright (C) 2006 by Mario Lobo * mlobo@digiart.art.br * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * 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., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * To compile: gcc -O2 -o dwork dwork.c * ***************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> char linha[2048],comd[2048]; void clean_it(char *arg); int main(int argc, char **argv) { int k = 1; char *maindir = "/bin/ls -R /usr/ports/", *pad = " | grep /work:" ; char arq1[100]; printf("\n----------------------------------------------------------------------------------------------------------------\n"); printf("DWORK - /usr/ports/nnn/nnn/'work' directory cleaner. (Mario Lobo - 2006)\n\n"); printf("ex.: dwork (no arguments) -> Deletes 'work' directories from /usr/ports\n"); printf(" dwork multimedia -> Deletes 'work' directories from /usr/ports/multimedia\n"); printf(" dwork multimedia audio -> Deletes 'work' directories from /usr/ports/multimedia AND /usr/ports/audio\n"); printf("----------------------------------------------------------------------------------------------------------------\n\n"); printf("** Working. Please wait...."); if (argc > 1) { while(k < argc) { strcpy(comd,maindir); strcat(comd,argv[k]); strcat(comd,pad); strcpy(arq1,"/usr/ports/"); strcat(arq1,argv[k]); clean_it(arq1); k++; } } else { strcpy(comd,maindir); strcat(comd,pad); clean_it("/usr/ports"); } printf("\n\n** DONE.\n\n"); } void clean_it(char *arg) { char *tmp; int c = 0; FILE *fp; fp = popen(comd,"r"); printf("\n"); while(!feof(fp)) { memset(linha,0,1024); fgets(linha,1024,fp); if (strlen(linha) < 15) continue; c = 1; tmp = strchr(linha,'\n'); *tmp = '\0'; tmp = strchr(linha,':'); *tmp = '\0'; printf("\n++ Removing %s....", linha); strcpy(comd,"/bin/rm -rf "); strcat(comd,linha); system(comd); } pclose(fp); if (!c) printf("\n-- NO 'work' directories in %s.",arg); } CODE ENDS ------------------------------------------------------ Best wishes, -- Mario Lobo http://www.mallavoodoo.com.br 99% rwindows FREE (FBSD not for Pro-Audio.... YET!!!)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608261919.07106.mlobo>