ObjFW  Check-in [30492a6b61]

Overview
Comment:OFStream: readTillDelimiter -> readUntilDelimiter
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 30492a6b6108335337cf24f4fc7fe52928bcf681208e609c229daeceaf2286cf
User & Date: js on 2022-08-30 01:34:58
Other Links: manifest | tags
Context
2022-09-04
13:17
OFXMLElement: Remove defaultNamespace property check-in: eed200181b user: js tags: trunk
2022-08-30
01:34
OFStream: readTillDelimiter -> readUntilDelimiter check-in: 30492a6b61 user: js tags: trunk
01:29
OFStream: A few minor documentation fixes check-in: 11627c18de user: js tags: trunk
Changes

Modified src/OFStream.h from [328ae5c229] to [3c7c1feb54].

773
774
775
776
777
778
779
780

781
782
783
784
785
786
787
788
789
790
791

792
793
794
795
796

797
798
799
800
801
802
803

804
805
806
807

808
809
810
811
812
813
814
815

816
817
818
819
820
821
822
773
774
775
776
777
778
779

780
781
782
783
784
785
786
787
788
789
790

791
792
793
794
795

796
797
798
799
800
801
802

803
804
805
806

807
808
809
810
811
812
813
814

815
816
817
818
819
820
821
822







-
+










-
+




-
+






-
+



-
+







-
+







 * @brief Reads until the specified string or `\0` is found or the end of
 *	  stream occurs.
 *
 * @param delimiter The delimiter
 * @return The line that was read, autoreleased, or `nil` if the end of the
 *	   stream has been reached.
 */
- (nullable OFString *)readTillDelimiter: (OFString *)delimiter;
- (nullable OFString *)readUntilDelimiter: (OFString *)delimiter;

/**
 * @brief Reads until the specified string or `\0` is found or the end of
 *	  stream occurs.
 *
 * @param delimiter The delimiter
 * @param encoding The encoding used by the stream
 * @return The line that was read, autoreleased, or `nil` if the end of the
 *	   stream has been reached.
 */
- (nullable OFString *)readTillDelimiter: (OFString *)delimiter
- (nullable OFString *)readUntilDelimiter: (OFString *)delimiter
				encoding: (OFStringEncoding)encoding;

/**
 * @brief Tries to reads until the specified string or `\0` is found or the end
 *	  of stream (see @ref readTillDelimiter:) and returns `nil` if not
 *	  of stream (see @ref readUntilDelimiter:) and returns `nil` if not
 *	  enough data has been received yet.
 *
 * @param delimiter The delimiter
 * @return The line that was read, autoreleased, or `nil` if the end of the
 *	   stream has been reached.
 */
- (nullable OFString *)tryReadTillDelimiter: (OFString *)delimiter;
- (nullable OFString *)tryReadUntilDelimiter: (OFString *)delimiter;

/**
 * @brief Tries to read until the specified string or `\0` is found or the end
 *	  of stream occurs (see @ref readTillDelimiter:encoding:) and returns
 *	  of stream occurs (see @ref readUntilDelimiter:encoding:) and returns
 *	  `nil` if not enough data has been received yet.
 *
 * @param delimiter The delimiter
 * @param encoding The encoding used by the stream
 * @return The line that was read, autoreleased, or `nil` if the end of the
 *	   stream has been reached.
 */
- (nullable OFString *)tryReadTillDelimiter: (OFString *)delimiter
- (nullable OFString *)tryReadUntilDelimiter: (OFString *)delimiter
				   encoding: (OFStringEncoding)encoding;

/**
 * @brief Writes everything in the write buffer to the stream.
 *
 * @return Whether the write buffer was flushed entirely. On non-blocking
 *	   sockets, this can return `false` if flushing the write buffer in its

Modified src/OFStream.m from [7df47f7053] to [e660892e5a].

670
671
672
673
674
675
676
677

678
679
680
681
682
683
684
670
671
672
673
674
675
676

677
678
679
680
681
682
683
684







-
+







#endif

- (OFString *)tryReadLine
{
	return [self tryReadLineWithEncoding: OFStringEncodingUTF8];
}

- (OFString *)tryReadTillDelimiter: (OFString *)delimiter
- (OFString *)tryReadUntilDelimiter: (OFString *)delimiter
			  encoding: (OFStringEncoding)encoding
{
	const char *delimiterCString;
	size_t j, delimiterLength, pageSize, bufferLength;
	char *buffer, *readBuffer;
	OFString *ret;

832
833
834
835
836
837
838
839

840
841

842
843
844
845

846
847
848
849
850

851
852
853
854
855
856
857
858

859
860

861
862
863
864
865
866
867
832
833
834
835
836
837
838

839
840

841
842
843
844

845
846
847
848
849

850
851
852
853
854
855
856
857

858
859

860
861
862
863
864
865
866
867







-
+

-
+



-
+




-
+







-
+

-
+







	}

	_waitingForDelimiter = true;
	return nil;
}


- (OFString *)readTillDelimiter: (OFString *)delimiter
- (OFString *)readUntilDelimiter: (OFString *)delimiter
{
	return [self readTillDelimiter: delimiter
	return [self readUntilDelimiter: delimiter
			      encoding: OFStringEncodingUTF8];
}

- (OFString *)readTillDelimiter: (OFString *)delimiter
- (OFString *)readUntilDelimiter: (OFString *)delimiter
		       encoding: (OFStringEncoding)encoding
{
	OFString *ret = nil;

	while ((ret = [self tryReadTillDelimiter: delimiter
	while ((ret = [self tryReadUntilDelimiter: delimiter
					encoding: encoding]) == nil)
		if (self.atEndOfStream)
			return nil;

	return ret;
}

- (OFString *)tryReadTillDelimiter: (OFString *)delimiter
- (OFString *)tryReadUntilDelimiter: (OFString *)delimiter
{
	return [self tryReadTillDelimiter: delimiter
	return [self tryReadUntilDelimiter: delimiter
				 encoding: OFStringEncodingUTF8];
}

- (bool)flushWriteBuffer
{
	size_t bytesWritten;