/* This file is part of
- * ======================================================
+ * ======================================================
*
* LyX, The Document Processor
- * Copyright (C) 1995 Matthias Ettrich
- * Copyright (C) 1995-1999 The LyX Team.
+ * Copyright 1995 Matthias Ettrich
+ * Copyright 1995-2000 The LyX Team.
*
- * This file is Copyright (C) 1999
+ * This file is Copyright 1999
* Kayvan A. Sylvan
*
- *======================================================
+ * ======================================================
*/
#include <config.h>
#pragma implementation
#endif
+#include <fstream>
+#include <cstdlib>
+
#include "ImportNoweb.h"
#include "lyxrc.h"
-#include "syscall.h"
-#include "filetools.h"
+#include "support/syscall.h"
#include "bufferlist.h"
-extern LyXRC * lyxrc;
-extern BufferList bufferlist;
-
-// $Id: ImportNoweb.C,v 1.1 1999/09/27 18:44:36 larsbj Exp $
+using std::ifstream;
+using std::getline;
-#if !defined(lint) && !defined(WITH_WARNINGS)
-static char vcid[] = "$Id: ImportNoweb.C,v 1.1 1999/09/27 18:44:36 larsbj Exp $";
-#endif /* lint */
+extern BufferList bufferlist;
/*
* Implementation the ImportNoweb methods.
Buffer * ImportNoweb::run()
{
// run reLyX -n
- LString tmp = lyxrc->relyx_command + " -n -c " +
+ string tmp = lyxrc.relyx_command + " -n -c " +
documentclass() + " -f " + file;
Systemcalls one;
Buffer * buf = 0;
- int result= one.Startscript(Systemcalls::System, tmp);
- if (result==0) {
- LString filename = file + ".lyx";
+ int result= one.startscript(Systemcalls::System, tmp);
+ if (result == 0) {
+ string filename = file + ".lyx";
// File was generated without problems. Load it.
buf = bufferlist.loadLyXFile(filename);
}
return buf;
}
+
// Provide the literate documentclass by parsing the file.
-//
-LString ImportNoweb::documentclass()
+string ImportNoweb::documentclass()
{
- LString result = "literate-article"; // Default
-
- FilePtr inputfile(file, FilePtr::read);
- if (!inputfile()) return "nofile"; // Should not happen!
+ string result = "literate-article"; // Default
- char buf[BUFSIZE], *p, *q;
+ ifstream ifs(file.c_str());
- while(!feof(inputfile())) {
- (void)fgets(buf, BUFSIZE, inputfile());
- if ((p = strstr(buf, "\\documentclass"))) {
- while ((*p) && (*p != '{'))
- p++;
- q = p++;
- while ((*q) && (*q != '}'))
- q++;
- *q = '\0';
- result = p;
- result = "literate-" + result;
+ if (!ifs) return "nofile"; // Should not happen!
+ string line;
+ while (getline(ifs, line)) {
+ string::size_type p = line.find("\\documentclass");
+ if (p != string::npos) {
+ p = line.find('{', p);
+ string::size_type q = line.find('}', p);
+ result = "literate-" + line.substr(p + 1, q - p - 1);
+ break;
}
}
-
return result;
}