এই index_format
পরিবর্তনশীল
set index_format='mfdate "%[%s]" "%4C %Z %[!%b %d %Y] %-17.17F (%3l) %s" |'
একসাথে ব্যবহারকারীর হপের এই উত্তরেmfdate.c
উপস্থাপিত এই সংশোধিত সাথে :
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define DAY (time_t)86400
#define YEAR (time_t)31556926
int main(int argc, const char *argv[]) {
time_t current_time;
time_t message_time;
const char *old = "old";
char *recent = "recent";
char *today = "today";
const char *format;
current_time = time(NULL);
if (argc != 3) {
printf("Usage: %s format\n", argv[0]);
return EXIT_FAILURE;
}
format = argv[2];
message_time = atoi(argv[1]);
if ((message_time/YEAR) < (current_time/YEAR)) {
printf("%s,%s", old, format);
} else if ((message_time/DAY) < (current_time/DAY)) {
printf("%s,%s", recent, format);
} else {
printf("%s,%s", today, format);
}
return EXIT_SUCCESS;
}
আমার জন্য সঠিকভাবে কাজ করে mutt 1.6.1
এবং আপনি যেমন দেখেন বিষয়টিতে %
সাইন দিয়ে কোনও সমস্যা নেই , যদি আসল সমস্যাটি এটাই ছিল তবে:
এটি প্রাথমিক "স্রেফ ওয়ার্কিং" সংস্করণ কারণ আপনার আসল প্রশ্নটি ঘনিষ্ঠভাবে দেখার পরে আমি নিশ্চিত নই যে আপনি এটি চান কিনা। যাইহোক, যদি এই হয় কি আমাকে জানাতে চাই এবং আমরা চিন্তা করব কিভাবে এটাকে আরও ভাল করতে হবে।
সম্পাদনা :
এটি আপনার পছন্দের সাথেও কাজ করতে পারে index_format
:
set index_format='mfdate "%[%s]" "%%Z %%{%%Y %%b %%e %%H:%%M} %%?X?(%%X)& ? %%-22.22F %%.100s %%> %%5c" |'
mfdate.c:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define DAY (time_t)86400
#define YEAR (time_t)31556926
int main(int argc, const char *argv[]) {
time_t current_time;
time_t message_time;
const char *old = "old";
char *recent = "recent";
char *today = "today";
const char *format;
current_time = time(NULL);
if (argc != 3) {
printf("Usage: %s format\n", argv[0]);
return EXIT_FAILURE;
}
format = argv[2];
message_time = atoi(argv[1]);
if ((message_time/YEAR) < (current_time/YEAR)) {
printf("%s,%s%%", old, format);
} else if ((message_time/DAY) < (current_time/DAY)) {
printf("%s,%s%%", recent, format);
} else {
printf("%s,%s%%", today, format);
}
return 0;
}
সম্পাদনা :
এটি কীভাবে কাজ করে তা আমাকে ব্যাখ্যা করুন:
mfdate
2 আর্গুমেন্ট লাগে:
"%[%s]"
এবং:
"%%Z %%{%%Y %%b %%e %%H:%%M} %%?X?(%%X)& ? %%-22.22F %%.100s %%> %%5c"
প্রথম তর্কটি কেবলমাত্র এখানে নথিতে time of the message
বর্ণিত হিসাবে
index_format
রয়েছে .muttrc
:
# %[fmt] the date and time of the message is converted to the local
# time zone, and ``fmt'' is expanded by the library function
# ``strftime''; a leading bang disables locales
এই ক্ষেত্রে fmt
সাথে প্রতিস্থাপন করা হয় %s
, কারণ হিসাবে ব্যাখ্যা হিসাবে %s
বোঝানো The
number of seconds since the Epoch
হয়েছে man strftime
। প্রথম আর্গুমেন্ট গনা বয়স কত বার্তা আর কোনটা ট্যাগ ব্যবহার করা হয়: old
, recent
বা today
এটা থাকা উচিত।
দ্বিতীয় যুক্তিটি হল index_format
ভেরিয়েবলের অবশিষ্ট অংশ । এটি mfdate
কেবল মুদ্রণের জন্য ব্যবহৃত %
হয় তবে শেষে একটি অতিরিক্ত যুক্ত করা হয় printf
কারণ এটি মুট ম্যানুয়ালটিতে বলা হয়েছে :
প্রাপ্ত স্ট্রিংটি প্রদর্শনের জন্য ব্যবহৃত হবে। যদি ফেরত স্ট্রিংটি% এর মধ্যে শেষ হয় তবে এটি দ্বিতীয়বার বিন্যাসের মধ্য দিয়ে যাবে।
%
এখানে প্রত্যেকটি দ্বিগুণ হয়েছে কারণ আমরা আক্ষরিকভাবে %
দ্বিতীয় ফর্ম্যাটিংয়ের মাধ্যমে যেতে চাই mutt
।