[flang-commits] [flang] FDATE extension implementation: get date and time in ctime format (PR #71222)

David Truby via flang-commits flang-commits at lists.llvm.org
Fri Nov 10 07:01:07 PST 2023


================
@@ -125,6 +142,36 @@ static bool FitsInDescriptor(
       kind, terminator, value);
 }
 
+void removeNewLine(char *str) {
+  char *newlinePos = std::strchr(str, '\n');
+  if (newlinePos) {
+    *newlinePos = '\0'; // Replace with null terminator
+  }
+}
+
+std::int32_t RTNAME(FDate)(const Descriptor *value, const Descriptor *errmsg) {
+  FillWithSpaces(*value);
+
+  std::time_t current_time;
+  std::time(&current_time);
+  std::array<char, 26> str;
+  // Day Mon dd hh:mm:ss yyyy\n is 26 character,
+  // e.g. Tue May 26 21:51:03 2015\n\0
+
+  ctime_alloc(str.data(), str.size(), current_time);
+  removeNewLine(str.data());
----------------
DavidTruby wrote:

Since the 25th character will always be a newline can we not just do:
```
str[24] = '\0';
```
and save us the time of calling strchr?

https://github.com/llvm/llvm-project/pull/71222


More information about the flang-commits mailing list