AIX port

Alexander Varakin avarakin00 at hotmail.com
Mon Apr 8 03:18:22 UTC 2002


Hi ,

A was able to build mc on AIX 4.3.3 using VisualAge C v5.0 compiler (xlc_r).
The  cc compiler didn't work so I had to specify explicitly CC=xlc_r.
I used code drop 2002-03-20.
I had to fix few build problems using type casts (this compiler is a little
bit picky with types) and some other trivial problems.

Another problem was with mountlist.c : somehow  MOUNTED_GETMNTENT1 got
defined instead of MOUNTED_VMOUNT, so the mountlist.c was not compiling.
Fixed using preprocessor.

The biggest problem was with subshell support ( I reported this problem some
time back) . This problem is also present in IBM's linux toolbox binaries.
It turned out that a wrong version of pty_open_master was used. Fixed using
preprocessor.

I beleive both of these problems come from configure script, but I have no
idea how to fix it, so I fixed them just using preprocessor.

Now, since the subsehell is working, I can start testing mc in real work.

Below is a diff file.

Alex


diff -rcbt mc-4.5.99a/edit/edit.h mc-4.5.99a_aix/edit/edit.h
*** mc-4.5.99a/edit/edit.h Mon Mar 18 15:20:59 2002
--- mc-4.5.99a_aix/edit/edit.h Thu Mar 21 15:47:56 2002
***************
*** 344,349 ****
--- 344,350 ----
  #define FONT_MEAN_WIDTH 1

  #define get_sys_error(s) (s)
+ #undef open
  #define open mc_open
  #define close(f) mc_close(f)
  #define read(f,b,c) mc_read(f,b,c)
diff -rcbt mc-4.5.99a/edit/editcmd.c mc-4.5.99a_aix/edit/editcmd.c
*** mc-4.5.99a/edit/editcmd.c Wed Feb 27 09:41:29 2002
--- mc-4.5.99a_aix/edit/editcmd.c Sun Apr  7 21:14:20 2002
***************
*** 1433,1440 ****
      while ((p = edit_find_string (p, exp, len, last_byte, get_byte, data,
once_only, d)) >= 0) {
          if (replace_whole) {
  /*If the bordering chars are not in option_whole_chars_search then word is
whole */
!             if (!strcasechr (option_whole_chars_search, (*get_byte) (data,
p - 1))
!                 && !strcasechr (option_whole_chars_search, (*get_byte)
(data, p + *len)))
                  return p;
              if (once_only)
                  return -2;
--- 1433,1440 ----
      while ((p = edit_find_string (p, exp, len, last_byte, get_byte, data,
once_only, d)) >= 0) {
          if (replace_whole) {
  /*If the bordering chars are not in option_whole_chars_search then word is
whole */
!             if (!strcasechr ((const unsigned
char*)option_whole_chars_search, (*get_byte) (data, p - 1))
!                 && !strcasechr ((const unsigned
char*)option_whole_chars_search, (*get_byte) (data, p + *len)))
                  return p;
              if (once_only)
                  return -2;
***************
*** 1985,1991 ****
          int r;
          p = block = edit_get_block (edit, start, finish, &len);
          while (len) {
!             r = write (file, p, len);
              if (r < 0)
                  break;
              p += r;
--- 1985,1991 ----
          int r;
          p = block = edit_get_block (edit, start, finish, &len);
          while (len) {
!             r = write (file, (char*)p, len);
              if (r < 0)
                  break;
              p += r;
***************
*** 2433,2440 ****
      replace_case = rc;
  }

!
! unsigned int MAX_WORD_COMPLETIONS = 100; /* in listbox */
  unsigned int compl_dlg_h; /* completion dialog height */
  unsigned int compl_dlg_w; /* completion dialog width */

--- 2433,2439 ----
      replace_case = rc;
  }

! #define MAX_WORD_COMPLETIONS 100  /* in listbox */
  unsigned int compl_dlg_h; /* completion dialog height */
  unsigned int compl_dlg_w; /* completion dialog width */

***************
*** 2458,2467 ****
              break;

  /* add matched completion if not yet added */
!         bufpos = &edit->buffers1[start >> S_EDIT_BUF_SIZE][start &
M_EDIT_BUF_SIZE];
          skip = 0;
          for (i = 0; i < *num; i++) {
!             if (strncmp (&compl[i].text[word_len], &bufpos[word_len],
                  max (len, compl[i].len) - word_len) == 0) {
                  skip = 1;
                  break; /* skip it, already added */
--- 2457,2466 ----
              break;

  /* add matched completion if not yet added */
!         bufpos = (char*) &edit->buffers1[start >> S_EDIT_BUF_SIZE][start &
M_EDIT_BUF_SIZE];
          skip = 0;
          for (i = 0; i < *num; i++) {
!             if (strncmp ((const char*)&compl[i].text[word_len],
&bufpos[word_len],
                  max (len, compl[i].len) - word_len) == 0) {
                  skip = 1;
                  break; /* skip it, already added */
***************
*** 2548,2554 ****

  /* fill the listbox with the completions */
      for (i = 0; i < num_compl; i++)
!         listbox_add_item (compl_list, 0, 0, compl[i].text, NULL);

  /* pop up the dialog */
      run_dlg (compl_dlg);
--- 2547,2553 ----

  /* fill the listbox with the completions */
      for (i = 0; i < num_compl; i++)
!         listbox_add_item (compl_list, 0, 0, (char*)compl[i].text, NULL);

  /* pop up the dialog */
      run_dlg (compl_dlg);
***************
*** 2588,2594 ****
          return;

  /* prepare match expression */
!     bufpos = &edit->buffers1[word_start >> S_EDIT_BUF_SIZE]
                              [word_start & M_EDIT_BUF_SIZE];
      strncpy (match_expr, bufpos, word_len);
      match_expr[word_len] = '\0';
--- 2587,2593 ----
          return;

  /* prepare match expression */
!     bufpos = (char *) &edit->buffers1[word_start >> S_EDIT_BUF_SIZE]
                              [word_start & M_EDIT_BUF_SIZE];
      strncpy (match_expr, bufpos, word_len);
      match_expr[word_len] = '\0';
diff -rcbt mc-4.5.99a/src/mountlist.c mc-4.5.99a_aix/src/mountlist.c
*** mc-4.5.99a/src/mountlist.c Thu Sep  6 21:40:45 2001
--- mc-4.5.99a_aix/src/mountlist.c Sun Apr  7 21:06:11 2002
***************
*** 19,24 ****
--- 19,29 ----
  #include <config.h>
  #endif

+ #ifdef IS_AIX
+ #undef MOUNTED_GETMNTENT1
+ #define MOUNTED_VMOUNT
+ #endif
+
  #include <sys/types.h>
  #include <stdio.h>
  #include <fcntl.h>
diff -rcbt mc-4.5.99a/src/regex.c mc-4.5.99a_aix/src/regex.c
*** mc-4.5.99a/src/regex.c Mon Mar 18 15:22:03 2002
--- mc-4.5.99a_aix/src/regex.c Thu Mar 21 15:56:38 2002
***************
*** 297,303 ****
  # endif /* emacs */
  

  /* Integer type for pointers.  */
! # if !defined _LIBC && !defined HAVE_UINTPTR_T
  typedef unsigned long int uintptr_t;
  # endif

--- 297,303 ----
  # endif /* emacs */
  

  /* Integer type for pointers.  */
! # if !defined _LIBC && !defined HAVE_UINTPTR_T && !defined _H_INTTYPES
  typedef unsigned long int uintptr_t;
  # endif

Only in mc-4.5.99a_aix/src: regex.c~
diff -rcbt mc-4.5.99a/src/subshell.c mc-4.5.99a_aix/src/subshell.c
*** mc-4.5.99a/src/subshell.c Mon Feb 18 16:48:26 2002
--- mc-4.5.99a_aix/src/subshell.c Sat Apr  6 23:00:09 2002
***************
*** 1159,1165 ****

  /* }}} */

! #elif HAVE_GRANTPT /* !HAVE_SCO */

  /* {{{ System V version of pty_open_master */

--- 1159,1165 ----

  /* }}} */

! #elif defined(HAVE_GRANTPT) && !defined(IS_AIX)  /* !HAVE_SCO */

  /* {{{ System V version of pty_open_master */





More information about the mc-devel mailing list