File: addu.cc

package info (click to toggle)
giac 1.6.0.41%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 64,540 kB
  • sloc: cpp: 351,842; ansic: 105,138; python: 30,545; javascript: 8,675; yacc: 2,690; lex: 2,449; makefile: 1,243; sh: 579; perl: 314; lisp: 216; asm: 62; java: 41; sed: 16; csh: 7; pascal: 6
file content (43 lines) | stat: -rw-r--r-- 915 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// -*- compile-command: "g++ addu.cc -o addu" -*-
#include <string>
#include <iostream>
#include <fstream>
#include <unistd.h>

using namespace std;

void add1u(string & s){
  if (s.size()>12 && s.substr(0,11)=="mount -f -s")
    s=s.substr(0,6)+" -f -u "+s.substr(12,s.size()-12);
  if (s.size()>9 && s.substr(0,8)=="mount -s")
    s=s.substr(0,6)+" -u "+s.substr(9,s.size()-9);
}

void addu(const std::string & filename,const string & target){
  FILE * in=fopen(filename.c_str(),"r");
  string s1,s2;
  char ch;
  for (;!feof(in);){
    ch=fgetc(in);
    if (feof(in) or ch=='\n'){
      add1u(s1);
      s1+='\n';
      s2+=s1;
      s1="";
    }
    else
      s1+=ch;
  }
  fclose(in);
  ofstream of(target.c_str());
  // of << "del " << filename << endl;
  // of << "del " << target << endl;
  of << s2;
  of.close();
}

int main(int argc,char ** argv){
  if (argc<3)
    return 1;
  addu(argv[1],argv[2]);
}