old_contents: import os
  import resource
  
  from test.test_support import TESTFN
  
  # This test is checking a few specific problem spots.  RLIMIT_FSIZE
  # should be RLIM_INFINITY, which will be a really big number on a
  # platform with large file support.  On these platforms, we need to
  # test that the get/setrlimit functions properly convert the number to
  # a C long long and that the conversion doesn't raise an error.
  
  try:
      cur, max = resource.getrlimit(resource.RLIMIT_FSIZE)
  except AttributeError:
      pass
  else:
      print resource.RLIM_INFINITY == max
      resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
  
  # Now check to see what happens when the RLIMIT_FSIZE is small.  Some
  # versions of Python were terminated by an uncaught SIGXFSZ, but
  # pythonrun.c has been fixed to ignore that exception.  If so, the
  # write() should return EFBIG when the limit is exceeded.
  
  try:
      resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max))
      f = open(TESTFN, "wb")
      f.write("X" * 1024)
      try:
          f.write("Y")
          f.flush()
      except IOError:
          pass
      f.close()
      os.unlink(TESTFN)
  finally:
      resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
  
  # And be sure that setrlimit is checking for really large values
  too_big = 10L**50
  try:
      resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max))
  except OverflowError:
      pass
  try:
      resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big))
  except OverflowError:
      pass
  
new_contents: import os
  import resource
  
  from test.test_support import TESTFN
  
  # This test is checking a few specific problem spots.  RLIMIT_FSIZE
  # should be RLIM_INFINITY, which will be a really big number on a
  # platform with large file support.  On these platforms, we need to
  # test that the get/setrlimit functions properly convert the number to
  # a C long long and that the conversion doesn't raise an error.
  
  try:
      cur, max = resource.getrlimit(resource.RLIMIT_FSIZE)
  except AttributeError:
      pass
  else:
      print resource.RLIM_INFINITY == max
      resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
  
  # Now check to see what happens when the RLIMIT_FSIZE is small.  Some
  # versions of Python were terminated by an uncaught SIGXFSZ, but
  # pythonrun.c has been fixed to ignore that exception.  If so, the
  # write() should return EFBIG when the limit is exceeded.
  
  # At least one platform has an unlimited RLIMIT_FSIZE and attempts to
  # change it raise ValueError instead.
  
  try:
      try:
          resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max))
          limit_set = 1
      except ValueError:
          limit_set = 0
      f = open(TESTFN, "wb")
      f.write("X" * 1024)
      try:
          f.write("Y")
          f.flush()
      except IOError:
          if not limit_set:
              raise
      f.close()
      os.unlink(TESTFN)
  finally:
      resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
  
  # And be sure that setrlimit is checking for really large values
  too_big = 10L**50
  try:
      resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max))
  except (OverflowError, ValueError):
      pass
  try:
      resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big))
  except (OverflowError, ValueError):
      pass
  
subject: Patch #551960: Add check for setrlimit() support