diff --git a/src/program.c b/src/program.c
index 270321fba9f112fe987ba2a38559c2c479896041..a65b25795c67416067b01b0e720c6d511f8bba2c 100644
--- a/src/program.c
+++ b/src/program.c
@@ -4,7 +4,7 @@
 ||| See the files COPYING and DISCLAIMER for more information.
 \*/
 #include "global.h"
-RCSID("$Id: program.c,v 1.19 1997/02/07 01:34:19 hubbe Exp $");
+RCSID("$Id: program.c,v 1.20 1997/02/11 07:20:15 hubbe Exp $");
 #include "program.h"
 #include "object.h"
 #include "dynamic_buffer.h"
@@ -1066,6 +1066,21 @@ int add_program_constant(char *name,
   return ret;
 }
 
+int add_function_constant(char *name, void (*cfun)(INT32), char * type, INT16 flags)
+{
+  struct svalue s;
+  struct pike_string *n;
+  INT32 ret;
+
+  s.type=T_FUNCTION;
+  s.subtype=FUNCTION_BUILTIN;
+  s.u.efun=make_callable(cfun, name, type, flags, 0, 0);
+  ret=simple_add_constant(name, &s, 0);
+  free_svalue(&s);
+  return ret;
+}
+
+
 int end_class(char *name, INT32 flags)
 {
   INT32 ret;
diff --git a/src/program.h b/src/program.h
index d48a69e81a042c01a499490baf6792cb1ae647e3..0a3ad12dc1f476ecc01c3d655605597efce5a668 100644
--- a/src/program.h
+++ b/src/program.h
@@ -220,6 +220,8 @@ int add_string_constant(char *name,
 int add_program_constant(char *name,
 			 struct program *p,
 			 INT32 flags);
+int add_function_constant(char *name, void (*cfun)(INT32), char * type, INT16 flags);
+int end_class(char *name, INT32 flags);
 INT32 define_function(struct pike_string *name,
 		      struct pike_string *type,
 		      INT16 flags,