1 // -*- compile-command: "g++ addu.cc -o addu" -*-
2 #include <string>
3 #include <iostream>
4 #include <fstream>
5 #include <unistd.h>
6 
7 using namespace std;
8 
add1u(string & s)9 void add1u(string & s){
10   if (s.size()>12 && s.substr(0,11)=="mount -f -s")
11     s=s.substr(0,6)+" -f -u "+s.substr(12,s.size()-12);
12   if (s.size()>9 && s.substr(0,8)=="mount -s")
13     s=s.substr(0,6)+" -u "+s.substr(9,s.size()-9);
14 }
15 
addu(const std::string & filename,const string & target)16 void addu(const std::string & filename,const string & target){
17   FILE * in=fopen(filename.c_str(),"r");
18   string s1,s2;
19   char ch;
20   for (;!feof(in);){
21     ch=fgetc(in);
22     if (feof(in) or ch=='\n'){
23       add1u(s1);
24       s1+='\n';
25       s2+=s1;
26       s1="";
27     }
28     else
29       s1+=ch;
30   }
31   fclose(in);
32   ofstream of(target.c_str());
33   // of << "del " << filename << endl;
34   // of << "del " << target << endl;
35   of << s2;
36   of.close();
37 }
38 
main(int argc,char ** argv)39 int main(int argc,char ** argv){
40   if (argc<3)
41     return 1;
42   addu(argv[1],argv[2]);
43 }
44