Print this page
11506 smatch resync

@@ -519,10 +519,19 @@
         if (!is_struct_tag(basetype, tag))
                 sm_error("'%%p%c' expects argument of type struct '%s*', argument %d has type '%s'",
                         fmt[0], tag, vaidx, type_to_str(type));
 }
 
+static void time_and_date(const char *fmt, struct symbol *type, struct symbol *basetype, int vaidx)
+{
+        assert(tolower(fmt[0]) == 't');
+
+        if (fmt[1] == 'R' && !is_struct_tag(basetype, "rtc_time"))
+                sm_error("'%%ptR' expects argument of type struct 'rtc_time', argument %d has type '%s'",
+                         vaidx, type_to_str(type));
+}
+
 static void check_clock(const char *fmt, struct symbol *type, struct symbol *basetype, int vaidx)
 {
         assert(fmt[0] == 'C');
         if (isalnum(fmt[1])) {
                 if (!strchr("nr", fmt[1]))

@@ -754,10 +763,13 @@
                 break;
         case 'D':
         case 'd':
                 dentry_file(fmt, type, basetype, vaidx);
                 break;
+        case 't':
+                time_and_date(fmt, type, basetype, vaidx);
+                break;
         case 'C':
                 check_clock(fmt, type, basetype, vaidx);
                 break;
         case 'g':
                 block_device(fmt, type, basetype, vaidx);