]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/general-scheme.cc
Update.
[lilypond.git] / lily / general-scheme.cc
index d0804297916f6921ac7c6b4dbc34183795a430d3..773b5964960c1c3262e4304bef4ba862da2345b4 100644 (file)
@@ -9,9 +9,9 @@
 
 #include "config.hh"
 
-#include <math.h>  /* isinf */
-#include <stdio.h>
-#include <string.h>  /* memset */
+#include <cstdio>
+#include <cstring>  /* memset */
+using namespace std;
 
 #include "international.hh"
 #include "libc-extension.hh"
 #include "main.hh"
 #include "file-path.hh"
 
-/* MacOS S fix:
-   source-file.hh includes cmath which undefines isinf and isnan
-*/
-#ifdef __APPLE__
-inline int my_isinf (Real r) { return isinf (r); }
-inline int my_isnan (Real r) { return isnan (r); }
-#endif
-
 LY_DEFINE (ly_find_file, "ly:find-file",
           1, 0, 0, (SCM name),
           "Return the absolute file name of @var{name}, "
@@ -52,12 +44,19 @@ LY_DEFINE (ly_find_file, "ly:find-file",
   buffering.)
 */
 LY_DEFINE (ly_gulp_file, "ly:gulp-file",
-          1, 0, 0, (SCM name),
+          1, 1, 0, (SCM name, SCM size),
           "Read the file @var{name}, and return its contents in a string.  "
-          "The file is looked up using the search path.")
+          "The file is looked up using the search path. ")
 {
   SCM_ASSERT_TYPE (scm_is_string (name), name, SCM_ARG1, __FUNCTION__, "string");
-  String contents = gulp_file_to_string (ly_scm2string (name), true);
+  int sz = -1;
+  if (size != SCM_UNDEFINED)
+    {
+      SCM_ASSERT_TYPE (scm_is_number (size), size, SCM_ARG2, __FUNCTION__, "number");
+      sz = scm_to_int (size);
+    }
+  
+  String contents = gulp_file_to_string (ly_scm2string (name), true, sz);
   return scm_from_locale_stringn (contents.get_str0 (), contents.length ());
 }
 
@@ -157,11 +156,7 @@ LY_DEFINE (ly_number2string, "ly:number->string",
   if (scm_exact_p (s) == SCM_BOOL_F)
     {
       Real r (scm_to_double (s));
-#ifdef __APPLE__
-      if (my_isinf (r) || my_isnan (r))
-#else
        if (isinf (r) || isnan (r))
-#endif
          {
            programming_error (_ ("infinity or NaN encountered while converting Real number"));
            programming_error (_ ("setting to zero"));