Commit Graph

115 Commits (a44283b0b2e585d7e15d7c8e6574411b75c12a0a)

Author SHA1 Message Date
Josh Wolfe a44283b0b2 rework std.base64 api
* rename decode to decodeExactUnsafe.
* add decodeExact, which checks for invalid chars and padding.
* add decodeWithIgnore, which also allows ignoring chars.
* alphabets are supplied to the decoders with their
  char-to-index mapping already built, which enables it to be
  done at comptime.
* all decode/encode apis except decodeWithIgnore require dest
  to be the exactly correct length. This is calculated by a
  calc function corresponding to each api. These apis no longer
  return the dest parameter.
* for decodeWithIgnore, an exact size cannot be known a priori.
  Instead, a calc function gives an upperbound, and a runtime
  error is returned in case of overflow. decodeWithIgnore
  returns the number of bytes written to dest.

closes #611
2017-11-20 23:26:45 -07:00
dimenus a7d07d412c Added DLL loading capability in windows to the std lib. 2017-11-16 21:49:05 -06:00
Andrew Kelley a890380b6a fix windows trying to run linux-only tests 2017-11-10 18:29:49 -05:00
Andrew Kelley 5ae53dacfb rename test 2017-11-10 18:24:52 -05:00
Brendon Scheinman 87407b54b6 add epoll and timerfd support on linux 2017-11-10 15:12:46 -08:00
Andrew Kelley 20c2dbdbd3 add windows implementation of io.File.getEndPos 2017-11-10 14:36:03 -05:00
Andrew Kelley 1ac46fac15 add a std lib test for reading and writing files
* fix fstat wrong on darwin
 * move std.debug.global_allocator to std.debug.global_allocator_state and make it private
 * add std.debug.global_allocator as a pointer (to upgrade your zig code remove
   the '&')
2017-11-10 14:17:23 -05:00
Jeff Fowler 336d81894d Fix Stat include in darwin land (#605) 2017-11-09 13:46:53 -05:00
Jeff Fowler 52521d5f67 fix typo on darwin lseek (#602) 2017-11-09 11:35:35 -05:00
Andrew Kelley 4543413491 std.io: introduce buffered I/O and change API
I started working on #465 and made some corresponding std.io
API changes.

New structs:
 * std.io.FileInStream
 * std.io.FileOutStream
 * std.io.BufferedOutStream
 * std.io.BufferedInStream

Removed:
 * std.io.File.in_stream
 * std.io.File.out_stream

Now instead of &file.out_stream or &file.in_stream to get access to
the stream API for a file, you get it like this:

var file_in_stream = io.FileInStream.init(&file);
const in_stream = &file_in_stream.stream;

var file_out_stream = io.FileOutStream.init(&file);
const out_stream = &file_out_stream.stream;

This is evidence that we might not need any OOP features -
See #130.
2017-11-07 03:22:27 -05:00
Andrew Kelley 25972be45c fix windows build from previous commit 2017-10-31 22:24:02 -04:00
Andrew Kelley 9e234d4208 breaking change to std.io API
* Merge io.InStream and io.OutStream into io.File
 * Introduce io.OutStream and io.InStream interfaces
   - io.File implements both of these
 * Move mem.IncrementingAllocator to heap.IncrementingAllocator

Instead of:

```
%return std.io.stderr.printf("hello\n");
```

now do:

```
std.debug.warn("hello\n");
```

To print to stdout, see `io.getStdOut()`.

 * Rename std.ArrayList.resizeDown to std.ArrayList.shrink.
2017-10-31 04:47:55 -04:00
Andrew Kelley 8cfb0cfbce std.os.ChildProcess: on windows cwd affects exe search path
to match posix semantics

disabling non-passing build-examples tests. See #538
2017-10-16 02:30:03 -04:00
Andrew Kelley e3ad13e054 fix windows argument parsing 2017-10-15 20:19:15 -04:00
Andrew Kelley faf64b5d0f fix posix from previous commit 2017-10-15 16:47:29 -04:00
Andrew Kelley fcef7c4bb2 fix std.io.InStream for windows
now we handle PIPE_BROKEN as an EOF

also set up framework for debugging unexpected posix/windows errors
2017-10-15 16:45:43 -04:00
Andrew Kelley bb169a7b36 fix child process stdio piping behavior on windows 2017-10-15 16:03:32 -04:00
Andrew Kelley a98373f144 use correct integer type for windows BOOL 2017-10-15 14:01:55 -04:00
Andrew Kelley 3b0fe534bc fix regression on posix from previous commit 2017-10-15 01:24:58 -04:00
Andrew Kelley 8ab5313043 implement environment variables for windows 2017-10-15 01:23:10 -04:00
Andrew Kelley 531f3344dc implement std.os.rename for windows 2017-10-14 17:56:18 -04:00
Andrew Kelley 61d715d784 implement std.os.symLink for windows 2017-10-14 17:39:44 -04:00
Andrew Kelley ad6eec9480 fix regressions from previous commit on windows 2017-10-14 17:10:53 -04:00
Andrew Kelley 0307dc0b77 organize windows utility functions 2017-10-14 16:59:43 -04:00
Andrew Kelley a68dc65327 fix os.makeDir for posix 2017-10-14 15:39:31 -04:00
Andrew Kelley 0bc80411f6 implement os.makeDir for windows 2017-10-14 15:32:29 -04:00
Andrew Kelley 8d3eaab871 implement std.os.ChildProcess for windows 2017-10-14 15:32:18 -04:00
Andrew Kelley 7f9dc4ebc1 fix std.os.getRandomBytes for windows 2017-10-11 23:14:48 -04:00
Andrew Kelley b61a6ec8a6 implement command line argument parsing for windows
See #302
2017-10-11 22:50:16 -04:00
Andrew Kelley 717e791db2 better abort() implementation for windows
in debug mode, it spawns the debugger
2017-10-10 20:34:12 -04:00
Andrew Kelley 1c28631738 use allocator.shrink instead of realloc in os.path.real 2017-10-10 11:31:53 -04:00
Andrew Kelley e6334fe46d implement std.io.InStream for windows
See #302
2017-10-09 15:59:10 -04:00
Andrew Kelley 055b856f13 fix build on non-windows
broken by previous commit
2017-10-09 14:27:14 -04:00
Andrew Kelley c4262da8de implement os.path.real for windows and update allocator interface 2017-10-09 14:21:35 -04:00
Andrew Kelley a4310cf8b4 implement std.os.deleteFile for windows 2017-10-08 23:06:56 -04:00
Andrew Kelley 7f56744320 fix os.path.resolveWindows on non-windows 2017-10-08 21:52:26 -04:00
Andrew Kelley 9d5f15fe3d implement os.getCwd for windows 2017-10-08 21:44:24 -04:00
Andrew Kelley 7cfab2fb5f implement std.os.relative for windows 2017-10-08 21:44:24 -04:00
Andrew Kelley e15e1e09f0 os.path.basename implementation for windows 2017-10-08 21:44:17 -04:00
Andrew Kelley dcf5c9074e more std.os.path work for windows 2017-10-08 21:43:58 -04:00
Andrew Kelley 08ee69dac3 implement os.path.dirname for windows 2017-10-08 21:43:43 -04:00
Snorre 522b431057 fix isatty for macOS and libc (#523) 2017-10-03 09:33:30 -04:00
Andrew Kelley fd5a5db400 implement IncrementingAllocator for Windows 2017-09-27 22:59:58 -04:00
Andrew Kelley 768af66977 implement setreuid, setregid for darwin 2017-09-26 03:35:33 -04:00
Andrew Kelley 4f0f3a7d45 std.os.ChildProcess: setgid before setuid
otherwise we thwart our permissions to setuid
2017-09-26 03:17:58 -04:00
Andrew Kelley fd2d502e41 std.os.ChildProcess: ability to set both uid and gid 2017-09-26 02:42:06 -04:00
Andrew Kelley cba4a9ad4a update std.os.ChildProcess API
* add std.os.ChildProcess.setUserName
 * add std.os.getUserId
2017-09-26 01:01:49 -04:00
Andrew Kelley 8f0dfcbcfb Revert "windows API functions are not stdcalls"
This reverts commit 59410a2f13.

yes they are
2017-09-24 04:18:13 -04:00
Andrew Kelley 59410a2f13 windows API functions are not stdcalls 2017-09-24 04:09:13 -04:00
Andrew Kelley ba41be67f0 windows gui hello world 2017-09-24 03:55:45 -04:00