diff --git a/src/proto.h b/src/proto.h
index e34af85..8027232 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -42,8 +42,7 @@
 #  include "os_win32.pro"
 #  include "os_mswin.pro"
 #  include "winclip.pro"
-#  if (defined(__GNUC__) && !defined(__MINGW32__)) \
-	|| (defined(__BORLANDC__) && __BORLANDC__ < 0x502)
+#  if (defined(__GNUC__) && !defined(__MINGW32__))
 extern int _stricoll(char *a, char *b);
 #  endif
 # endif
@@ -108,73 +107,45 @@
 # endif
 
 /* These prototypes cannot be produced automatically. */
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-smsg(const char *, ...)
+int smsg(const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 1, 0)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-smsg_attr(int, const char *, ...)
+int smsg_attr(int, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 2, 3)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-smsg_attr_keep(int, const char *, ...)
+int smsg_attr_keep(int, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 2, 3)))
 #endif
     ;
 
 /* These prototypes cannot be produced automatically. */
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-semsg(const char *, ...)
+int semsg(const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 1, 0)))
 #endif
     ;
 
 /* These prototypes cannot be produced automatically. */
-void
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-siemsg(const char *, ...)
+void siemsg(const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 1, 0)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-vim_snprintf_add(char *, size_t, const char *, ...)
+int vim_snprintf_add(char *, size_t, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 3, 4)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-vim_snprintf(char *, size_t, const char *, ...)
+int vim_snprintf(char *, size_t, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 3, 4)))
 #endif
@@ -209,7 +180,7 @@
 # endif
 # include "search.pro"
 # ifdef FEAT_SIGNS
-# include "sign.pro"
+#  include "sign.pro"
 # endif
 # include "spell.pro"
 # include "spellfile.pro"
@@ -337,13 +308,7 @@
  */
 #if defined(FEAT_PERL) && !defined(IN_PERL_FILE)
 # define CV void
-# ifdef __BORLANDC__
-  #pragma option -pc
-# endif
 # include "if_perl.pro"
-# ifdef __BORLANDC__
-  #pragma option -p.
-# endif
 # include "if_perlsfio.pro"
 #endif
 
@@ -357,8 +322,4 @@
 void clip_mch_request_selection(VimClipboard *cbd);
 void clip_mch_set_selection(VimClipboard *cbd);
 #endif
-
-#ifdef __BORLANDC__
-# define _PROTO_H
-#endif
 #endif /* !PROTO && !NOPROTO */
