mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
use non-deprecated chrono functions
This commit is contained in:
parent
6fc78209da
commit
b963af9b4b
3 changed files with 23 additions and 13 deletions
|
@ -1,7 +1,7 @@
|
|||
//! Trait implementations for a few atomic types
|
||||
|
||||
use crate::traits::*;
|
||||
use taskchampion::chrono::prelude::*;
|
||||
use taskchampion::chrono::{offset::LocalResult, prelude::*};
|
||||
|
||||
impl PassByValue for usize {
|
||||
type RustType = usize;
|
||||
|
@ -20,12 +20,13 @@ impl PassByValue for libc::time_t {
|
|||
type RustType = Option<DateTime<Utc>>;
|
||||
|
||||
unsafe fn from_ctype(self) -> Option<DateTime<Utc>> {
|
||||
if self == 0 {
|
||||
None
|
||||
} else {
|
||||
Some(Utc.timestamp(self, 0))
|
||||
if self != 0 {
|
||||
if let LocalResult::Single(ts) = Utc.timestamp_opt(self, 0) {
|
||||
return Some(ts);
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
fn as_ctype(arg: Option<DateTime<Utc>>) -> libc::time_t {
|
||||
arg.map(|ts| ts.timestamp() as libc::time_t)
|
||||
|
|
|
@ -5,7 +5,7 @@ use std::convert::TryFrom;
|
|||
use std::ops::Deref;
|
||||
use std::ptr::NonNull;
|
||||
use std::str::FromStr;
|
||||
use taskchampion::chrono::{TimeZone, Utc};
|
||||
use taskchampion::chrono::{offset::LocalResult, TimeZone, Utc};
|
||||
use taskchampion::{Annotation, Tag, Task, TaskMut, Uuid};
|
||||
|
||||
/// A task, as publicly exposed by this library.
|
||||
|
@ -760,7 +760,9 @@ pub unsafe extern "C" fn tc_task_remove_annotation(task: *mut TCTask, entry: i64
|
|||
wrap_mut(
|
||||
task,
|
||||
|task| {
|
||||
task.remove_annotation(Utc.timestamp(entry, 0))?;
|
||||
if let LocalResult::Single(ts) = Utc.timestamp_opt(entry, 0) {
|
||||
task.remove_annotation(ts)?;
|
||||
}
|
||||
Ok(TCResult::Ok)
|
||||
},
|
||||
TCResult::Error,
|
||||
|
|
|
@ -4,7 +4,7 @@ use crate::depmap::DependencyMap;
|
|||
use crate::errors::{Error, Result};
|
||||
use crate::replica::Replica;
|
||||
use crate::storage::TaskMap;
|
||||
use chrono::prelude::*;
|
||||
use chrono::{offset::LocalResult, prelude::*};
|
||||
use log::trace;
|
||||
use std::convert::AsRef;
|
||||
use std::convert::TryInto;
|
||||
|
@ -227,10 +227,15 @@ impl Task {
|
|||
self.taskmap.iter().filter_map(|(k, v)| {
|
||||
if let Some(ts) = k.strip_prefix("annotation_") {
|
||||
if let Ok(ts) = ts.parse::<i64>() {
|
||||
if let LocalResult::Single(entry) = Utc.timestamp_opt(ts, 0) {
|
||||
return Some(Annotation {
|
||||
entry: Utc.timestamp(ts, 0),
|
||||
entry,
|
||||
description: v.to_owned(),
|
||||
});
|
||||
} else {
|
||||
// ignore an invalid timestamp
|
||||
return None;
|
||||
}
|
||||
}
|
||||
// note that invalid "annotation_*" are ignored
|
||||
}
|
||||
|
@ -311,7 +316,9 @@ impl Task {
|
|||
fn get_timestamp(&self, property: &str) -> Option<DateTime<Utc>> {
|
||||
if let Some(ts) = self.taskmap.get(property) {
|
||||
if let Ok(ts) = ts.parse() {
|
||||
return Some(Utc.timestamp(ts, 0));
|
||||
if let LocalResult::Single(entry) = Utc.timestamp_opt(ts, 0) {
|
||||
return Some(entry);
|
||||
}
|
||||
}
|
||||
// if the value does not parse as an integer, default to None
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue